我正在使用 RealBASIC 2011r3 编写一个软件,需要一种可靠的跨平台方式将字符串分成段落。我一直在使用以下,但它似乎只适用于 Linux:
dim pTemp() as string
pTemp = Split(txtOriginalArticle.Text, EndOfLine + EndOfLine)
当我在我的 Mac 上尝试此操作时,它会将所有内容作为一个段落返回。使这项工作在 RB 支持的所有三个构建目标上可靠工作的最佳方法是什么?
我正在使用 RealBASIC 2011r3 编写一个软件,需要一种可靠的跨平台方式将字符串分成段落。我一直在使用以下,但它似乎只适用于 Linux:
dim pTemp() as string
pTemp = Split(txtOriginalArticle.Text, EndOfLine + EndOfLine)
当我在我的 Mac 上尝试此操作时,它会将所有内容作为一个段落返回。使这项工作在 RB 支持的所有三个构建目标上可靠工作的最佳方法是什么?
EndofLine 会根据平台和创建字符串的平台而变化。您需要检查字符串中 EndOfLine 的类型。我相信它是 sMyString.EndOfLineType。一旦你知道它是什么,你就可以分裂它。
EndOfLine 还有其他属性。它可以是 EndOfLine.Macintosh/Windows/Unix。
EndOfLine 文档: http ://docs.realsoftware.com/index.php/EndOfLine
在继续之前,我几乎总是搜索并替换换行符的组合。我通常会做几行:
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 之前执行 10+13),因为您不希望最终用两个换行符替换包含 10 和 13 的换行符。
这有点麻烦,我不建议使用它来实际修改原始字符串,但它肯定有助于在尝试进一步解析字符串之前将所有换行符转换为同一个项目。