Задать вопрос
@vasyok228

Каким образом можно сделать ровную табуляцию в строке?

Как можно реализовать ровные отступы в зависимости от строк?

Есть строка, мне нужно как-то посчитать количество символов во всех строках, и где больше символов, оттуда привязать табуляцию, 4 пробела, пробелы нужны где стоит \t.
Сама строка:

let text = 
  '\n\
  Склад:\t\t50 из 100\n\
	Заказано:\t\t%s\n\
	\tВведите сколько желаете заказать:'


В итоге нужно:
'\n\
Склад:           50 из 100\n\  // тут получается 11 пробелов, так как тоже ст. 2 длиннее
Заказано:        5\n\          // ст2. тут получается 8 пробелов, самая длинная строка
Остаток:     50\n\             // тут получается 5 пробелов, так как ст.2 длине на один сим. 
    Введите сколько желаете заказать:  // Тут только 4, так как перед строкой нет символов '
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Каким образом можно сделать ровную табуляцию в строке?

Это можно сделать способом, который обычно называют "в лоб". То есть по сути просто взять и сделать, потому что здесь нет каких-либо сложностей даже для начинающего программиста. Проблема отсутствует, как таковая.

Не справиться может только ленивый, который желает переложить всю работу на плечи другого человека, либо несведущий в программировании человек. Судя по тому, что вы приводите код, вы всё же имеете какое-то отношение к программированию, пытаетесь сами что-то делать. Следовательно, это не второй, а первый вариант - лень.

Очень жаль.

При самостоятельном решении, когда задача кажется слишком сложной, её нужно разбивать на подзадачи (как бы этапы), каждая из которых уже по силам, а если нет, то дальше дробить на ещё более мелкие подзадачи. Этот процесс называется декомпозицией - это один из ключевых навыков программистов и не только их.

Вот, например, у вас есть подзадача:
мне нужно как-то посчитать количество символов во всех строках

Отлично, ведь это отдельная подзадача, которую можно изолировать и просто решить, абстрагируясь от связей с другими подзадачами (ведь это ещё успеется):
text.split('\n').forEach(
  (s,i)=>console.log('Символов в строка №'+(i+1)+': '+s.length)
);

Вероятно, вам кажется, что это не совсем то, что вам нужно. Всё верно, потому что это просто пример того, как легко можно решить отдельную простую подзадачу. А учитывая все связи, это решение придётся немного модифицировать под ваши хотелки, но это уже вы сами как-нибудь.

Предлагаю вам следующий алгоритм ваших дальнейших действий:
  • Если вы поняли код выше и легко можете написать подобный, то, как я и ответил выше, просто решайте вашу задачу в лоб. Сложную задачу разбивайте на подзадачи. Обучение вас этому навыку выходит за рамки ответа на ваш вопрос, но вы можете начать с Википедии.
  • Если вы с трудом поняли код выше или вообще ничего не поняли, но хотели бы понять, то подтяните знание самого языка. Без таких базовых понятий, как "массив" или "цикл", программировать практически не получится вообще. Объяснение основ выходит за рамки ответа на ваш вопрос, но вы можете начать с чтения учебника.
  • Если вы не хотите ни в чём разбираться, а просто хотите, чтобы вам предложили готовое решение и чтобы оно просто работало, то подтяните ваше умение формулировать, чего именно вы хотите. Текущий ваш вопрос сформулирован сумбурно, в стиле "чтобы у меня всё было, и мне за это ничего не было". При таком подходе придётся слишком долго ждать телепата 80 лвл. Лучше будет красиво, коротко и ясно объяснить детали, чтобы помочь смог любой специалист без уточняющих вопросов. Увы, объяснение принципов того, как задавать вопросы, снова выходит за рамки ответа на ваш изначальный вопрос, но вы можете начать с чтения правил этого ресурса. Хотя лаконично формулировать мысли они вас не научат. Но ведь надо же с чего-то начинать, верно?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov
Системный администратор
Не знаю есть ли в JS функция prinf или её аналог, но она то, что нужно.

Вот тут что-то похожее https://stackoverflow.com/questions/17224130/forma...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы