Какой самый надежный способ разбить фрагмент текста на абзацы в RealBasic, который будет работать в Windows, Mac и Linux?

Я пишу часть программного обеспечения, используя RealBASIC 2011r3, и мне нужен надежный кроссплатформенный способ разбить строку на параграфы. Я использовал следующее, но, похоже, работает только на Linux:

dim pTemp() as string
pTemp = Split(txtOriginalArticle.Text, EndOfLine + EndOfLine)

Когда я пытаюсь сделать это на моем Mac, он возвращает все как один абзац. Каков наилучший способ обеспечить надежную работу всех трех целевых сборок, поддерживаемых RB?

2 ответа

Решение

Я почти всегда ищу и заменяю комбинации символов разрыва строки, прежде чем продолжить. Я обычно делаю несколько строк:

yourString = replaceAll(yourString,chr(10)+chr(13),"<someLineBreakHolderString>") yourString = replaceAll(yourString,chr(13)+chr(10),"<someLineBreakHolderString>") yourString = replaceAll(yourString,chr(10),"<someLineBreakHolderString>") yourString = replaceAll(yourString,chr(13),"<someLineBreakHolderString>")

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

Это немного громоздко, и я бы не рекомендовал использовать его для фактического изменения исходной строки, но это определенно помогает преобразовать все разрывы строк в один и тот же элемент перед попыткой дальнейшего анализа строки.

EndofLine изменяется в зависимости от платформы и в зависимости от платформы, которая создала строку. Вам нужно будет проверить тип EndOfLine в строке. Я считаю, что это sMyString.EndOfLineType. Как только вы знаете, что это такое, вы можете разделить его.

Есть и другие свойства для EndOfLine. Это может быть EndOfLine.Macintosh/Windows/Unix.

Документы EndOfLine: http://docs.realsoftware.com/index.php/EndOfLine

Другие вопросы по тегам