1 / 1 / 0
Регистрация: 16.07.2020
Сообщений: 7

Разбить строку на равные части

07.08.2020, 18:41. Показов 7685. Ответов 11

Студворк — интернет-сервис помощи студентам
Дана строка любой длины.
Её нужно разбить на равные части.
Если в последней части не хватает символов дополнить их точками.

Добавлено через 9 минут
и вернуть в виде массива
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.08.2020, 18:41
Ответы с готовыми решениями:

Разбить фразу на равные части
Дана фраза, разбейте ее на равные части, посчитайте количество точек в каждой половине и повторите операцию с той половиной, в которой...

Разбить строку на равные части
допустим есть строка S:='21545789654785124587963254785125847'; //35 символов как ее разбить на строки по 10 символов примерно так ...

Разбить массив на две равные части (или приблизительно равные)
Задали задание. Нужно разбить одномерный массив на две почти равные части(если на равные не получается). Написал программу, однако...

11
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
07.08.2020, 20:05
JavaScript
1
2
3
4
5
6
7
8
9
10
11
// Дано:
let str = "Есливпоследнейчастинехватаетсимволовдополнитьихточками";
let sectionCount = 5;
 
let sectionLength = Math.ceil(str.length / sectionCount);
let array = [];
 
for (let i = 0; i < str.length; i += sectionLength)
    array.push(str.slice(i, i + sectionLength).padEnd(sectionLength, "."));
 
console.log(array);
1
1 / 1 / 0
Регистрация: 16.07.2020
Сообщений: 7
07.08.2020, 20:42  [ТС]
Спасибо за ответ. Я неправильно написал условие)
Количество частей может быть любым, но они должны быть заданной длины - это будет аргументом функции.

Например в функцию передаётся длина как аргумент - 4 и сама строка.

Input: "lorem ipsum dolor sit amet"
Output: ["lore", "m ip", "sum ", "dolo", "r si", "t am", "et.."]

В последнюю часть попали только 2 буквы, поэтому остаток заполнен точками.
0
1548 / 1525 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
08.08.2020, 11:13
Цитата Сообщение от MaxPlank Посмотреть сообщение
Количество частей может быть любым, но они должны быть заданной длины
MaxPlank, именно это вам и показал amr-now. Здесь длина строки - это переменная sectionCount.
Цитата Сообщение от MaxPlank Посмотреть сообщение
это будет аргументом функции
Так в чём проблема, оберните этот код в функцию, а переменные str и sectionCount сделайте параметрами.
1
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
08.08.2020, 13:19
MrCrown, count - количество.
length - длина.
То есть
JavaScript
1
2
// Дано:
let sectionLength = 4;
1
1548 / 1525 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
08.08.2020, 20:19
Цитата Сообщение от MrCrown Посмотреть сообщение
Здесь длина строки - это переменная sectionCount.
MaxPlank, прошу прощения, конечно же sectionLength
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
08.08.2020, 20:42
Лучший ответ Сообщение было отмечено MaxPlank как решение

Решение

MaxPlank, вот готовая функция в одну строку:
JavaScript
1
2
3
4
const splitString = (str, length) => str.match(new RegExp(`.{1,${length}}`, 'g')).map(el => el.padEnd(length, '.'));
 
console.log(splitString('lorem ipsum dolor sit amet', 4));
console.log(splitString('lorem ipsum dolor sit amet', 5));
5
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
09.08.2020, 07:38
Iverycool, не лучше ли в самом начале добавить точки в конец строки, а уже потом делить ее? А то обрабатывать все элементы результата, заведомо зная, что это если и понадобится, то только самому последнему - как-то не комильфо.
JavaScript
1
const splitByLen = (str, len) => (str + ".".repeat(len - str.length % len)).match(new RegExp(`.{1,${len}}`, "g"));
3
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.08.2020, 09:50
diadiavova, согласен. По феншую надо один раз дополнить точками:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
// Дано:
let str = "Есливпоследнейчастинехватаетсимволовдополнитьихточками";
let sectionLength = 5;
 
str += ".".repeat(sectionLength - str.length % sectionLength);
let array = [];
 
for (let i = 0; i < str.length; i += sectionLength)
    array.push(str.slice(i, i + sectionLength));
 
console.log(array);
3
1 / 1 / 0
Регистрация: 16.07.2020
Сообщений: 7
09.08.2020, 11:21  [ТС]
amr-now,

Спасибо, очень интересный вариант.

Добавлено через 1 час 23 минуты
Цитата Сообщение от Iverycool Посмотреть сообщение
.{1,
Iverycool, читаю документацию по регулярке и не могу понять это место.
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
09.08.2020, 11:44
MaxPlank,

https://learn.javascript.ru/regexp-quantifiers ;
https://learn.javascript.ru/string


Добавлено через 1 минуту
. в регулярных выражениях — любой символ.
2
1 / 1 / 0
Регистрация: 16.07.2020
Сообщений: 7
09.08.2020, 12:05  [ТС]
С регуляркой разобрался, всем спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.08.2020, 12:05
Помогаю со студенческими работами здесь

Разбить массив на равные части
Пользователь вводит массив целых чисел, состоящий из последовательных групп из 4 чисел. Как можно разбить массив на отдельные массивы...

Разбить массив на равные части
Всем привет! Нужно разбить массив А на m массивов равной длинны. как лучше это сделать? далее мне нужно Потом c помощью потоков (...

Разбить 3 столбца на равные части
Добрый вечер, уважаемые форумчане! Если есть мысли, как помочь, буду очень признателен. Задача в следующем. Есть 3 столбца,...

Разбить файл на равные части
Подскажите пожалуйста, как разбить файл с содержимым, средствами с++ на равные части(последний кусок может быть меньше) я нашел на...

Разбить массив на равные N части
Есть массив, например: int lines = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; мне надо разбить массив на 4 равных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru