Что нового

[Данные, строки] Разделить строку на пробеле, тем самым не превышая инное количество символов

dronet

Знающий
Сообщения
46
Репутация
8
Всем привет! Есть предложения? по поводу как можно разделить строку на пробеле, тем самым не превышая инное количество символов, скажем 20. Не тупо рубить её на 2 части посреди слова, а возвратитса до первого попавшегося пробела с конца, и тогда обрубить уже на пробеле, в две переменные.
Делал так
Код:
$sStrRep = StringRegExpReplace($sText, '(.*?\s.*?)', '', '\1')
Но это тупо, удаляет всё, до последнего пробела, остаётса только последнее слово.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Может быть так :
Код:
#Include<Array.au3>
$sText="123456890 g890 1234k5gggggggggggggggggg gggggggggg67890 1234567890"
$sPattern = '(.{1,19}\s|.{20})'
$aRezult = StringRegExp ( $sText ,$sPattern,3 )
 _ArrayDisplay($aRezult)
 
Автор
D

dronet

Знающий
Сообщения
46
Репутация
8
gregaz сказал(а):
Может быть так :

Спасибо, очень даже не плохо. Я как только не ставил эти символы, не получалось, надеюсь со временем пойму как их раставлять.
Немного доделал твоё предложение. добавил ешё одну единицу, плохо иногда формировал текст. добавил дополнителную переработку строки - чтоб бробел в конце добавлял о то последнее слово если даже и помешаетса всё равно обрезал.
Получилось так: это уже сама обработка после "Array.au3". Сойдёт за форматирование текста, если добавить функционал.
Код:
$aString = '' & StringMid($aArray[$x], 1) & ' ' ;~> Добавить к [Текушей] строке символы, ~ 'Слева' или 'Справа' ...
		$aRecord = StringRegExp($aString, '(.{1,80}\s|.{1,80})', 3) ;$aString[$x] ~~!
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
dronet [?]
добавил дополнителную переработку строки - чтоб бробел в конце добавлял о то последнее слово если даже и помешаетса всё равно обрезал.

Действительно.Это моя недоработка.
Так не должно было обрезать и без предварительной обработки :
Код:
$sPattern = '(.{1,19}\s|.{1,20})'
 
Верх