1

所以我在 Xojo(MacOS) 上创建了一个使用 EndofLine 解析段落的程序。但是,当我在 Windows 操作系统上运行它时,它根本不会解析它。Window 操作系统能识别 Xojo 中的 EndofLine 或 Chr(10)+Chr(13) 吗?

4

2 回答 2

1

EndOfLine始终依赖于平台,因此对于 Windows,其值为chr(13)+chr(10),而在 macOS 上为chr(10). 您可以使用EndOfLine.Windows和直接达到这些特定于平台的值EndOfLine.OSX

要规范化字符串中的行尾,您可以使用该ReplaceLineEndings()函数。

于 2019-05-22T13:32:45.827 回答
1

Xojo 的 EndOfLine 常量确实因您使用的平台而异。

您有两种选择来处理这个问题:

显式使用特定于平台的常量:

EndOfLine.Windows gives CR+LF
EndOfLine.Unix gives LF

更好的方法,特别是如果您从程序外部导入数据,例如从文件或网络套接字读取时,是规范化行分隔符以供内部使用,如下所示:

normalizedString = ReplaceLineEndings (importedString, EndOfLine)

现在,您可以将 EndOfLine 与 normalizedString 一起使用,例如将其拆分为单行:

dim lines() as String = normalizedString.Split (EndOfLine)

当你写回这个字符串时,你会自动将它变成系统的格式。

但是,当您将文本导出到您知道它需要某种格式的系统时,请将它们转换回该格式,如下所示:

// E.g, if you export them for a Mac:
outputString = ReplaceLineEndings (internalString, EndOfLine.Unix)
于 2019-05-22T13:36:55.303 回答