parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Подумал может кому пригодится дробилка строки на строки определённой длины без разрезания слов

Oleg 16.11.2004 20:24 / 16.11.2004 20:27

@main[]
$result[^string_drobilka[Это строка которую будем дробить на более короткие строки длинной по двадцать символов, надеюсь вам пригодится. Слова с большим количеством символов дробиться небудут, а будут занимать строку целиком. например лфдыорадфоыврафлдоыравылфдравдфыолавр. И ещё, чуть не забыл, когда будете считать символы незабывайте считать перевод строки как один символ;20;<br/>
]]

# разбиение строки на строки с определённым количеством символов
# Вызывать следующим образом
# ^string_drobilka[строка которую требуется разбить на строки;требуемое количество символов в строке;символ перевода строки по умолчанию  энтер]
@string_drobilka[str;symvols_in_string;perevod_stroki]

^if(!def $perevod_stroki){$perevod_stroki[
]}

# разбираем полученную строку на слова
$parts[^str.split[ ;v]]

# Обнуляем счётчик
$counter(0)

# Очищаем строку
$out_string

# перебираем полученную таблицу
^parts.menu{

# Сохраняем строку в переменную чтобы можно было посчитать количество символов в переменной
	$str_tmp[$parts.piece]

# Считаем количество символов в переменной
	$num_symvols(^str_tmp.length[])

# Считаем количество символов в строке где 1 - пробел
	$counter($counter+(1+$num_symvols))

# Если количество символов не болше определённого то добавляем слово к строке, если больше то обнуляем счётчик прибавляем к нему количество символов последнего слова, ставим перевод строки и вставляем слово
	^if($counter > $symvols_in_string){
		^if($counter == ($num_symvols+1)){
# Вставляем слово несмотря на то что оно больше заданного лимита, а заним перевод строки
			$out_string[${out_string}$parts.piece^if(def $out_string){$perevod_stroki}]
# Обнуляем счётчик тк начинаем новую строку
			$counter[0]
		}{
# Вставляем перевод стоки, а затем слово
			$out_string[${out_string}^if(def $out_string){$perevod_stroki}$parts.piece]
# Меняем значение счётчика тк начинаем новую строку
			$counter($num_symvols+1)
		}
	}{
# Вставляем пробел и слово
		$out_string[$out_string^if(def $out_string){ }$parts.piece]
	}
}

# Выводим результат
$result[$out_string]