Ваш код ставит тире в конце каждой строки, потому что, как это происходит, каждый (30n + 1) -й символ является непустым.Прежде всего, вы хотите использовать дефисы только , когда два символа строки не являются пробелами:
if(outStr[i] == " " or outStr[i+1] == " "):
Теперь эта проблема по-прежнему связана с проблемой вставки дефисовбез учета фактических слоговых делений, и вы не выбрасываете пробелы на полях:
Contrary to popular belief, Lo-
rem Ipsum is not simply random
text. It has roots in a piece
of classical Latin literature
from 45 BC, making it over 20-
00 years old. Richard McClinto-
ck, a Latin professor at Hampd-
en-Sydney College in Virginia,
looked up one of the more obs-
cure Latin words, consectetur,
from a Lorem Ipsum passage, a-
nd going through the cites of -
the word in classical literatu-
re, discovered the undoubtable
Если вы хотите удалить маргинальные пробелы, вам нужно проделать дополнительную работу: не печатать пробелыот вашего счетчика позиций, который предполагает, что вы захотите работать со строкой, которую вы потребляете 30 или 31 символ на строку (в зависимости от удаления пробела).Для «интеллектуального» выбора дефиса требуется словарь переносов (да, такая вещь существует) и дополнительная обработка.Кроме того, для адаптации к менее чем 30 символам, доступным для строки, необходимо вставить пробелы в строке, например, изменить
rem Ipsum is not simply random
text. It has roots in a piece
на
rem Ipsum is not simply random
text. It has roots in a piece
Это потребует некоторой дополнительной обработки ...если это стоит усилий для ваших нужд.