将字符串分割成多行

4

我想把一个字符串分成多行。长时间以来,我一直在使用

Split(myString, vbCrLf)

但是我遇到了一些问题,因为换行时使用了不同的字符。我想匹配所有这些字符(\n和\r\n等)。我该怎么办?


你可以用一个字符替换所有行尾,如vbCr、vbCrLf或chr(10) chr(13)等,然后再按该字符拆分,或者先拆分,再拆分... - Nathan_Sav
1个回答

5

将它们全部替换为另一个字符。在这个例子中,我将使用一个不常见的ASCII字符Chr(19)

myString = Replace(myString, vbCr, Chr(19))
myString = Replace(myString, vbLf, Chr(19))
myString = Replace(myString, vbCrLf, Chr(19))

'// Remove any doubled up Chr(19)
While InStr(myString, Chr(19) & Chr(19))
    myString = Replace(myString, Chr(19) & Chr(19), Chr(19))
Wend

'// Remove any trailing Chr(19) if present
y = Split(Left$(myString, Len(myString) - IIf(Right$(myString, 1) = Chr(19), 1, 0)), Chr(19))

For Each s In y
    Debug.Print s & ": " & Len(s)
Next

你能告诉我在 \n 表示法中,vbCr、vbLf 和 vbCrLf 分别代表什么吗? - principal-ideal-domain
vbCr 是回车 (\r),vbLf 是换行 (\n)。vbCrLf 是回车换行 (\r\n)。 - SierraOscar
这意味着你的代码在分割之前会将 "line1\r\nline2" 转换为 "line1\r\n\nline2",再转换为 "line1\r\r\n\r\nline2" 吗? - principal-ideal-domain
好的,我不知道它被解析为单个字符。我在上面的评论中描述的是替换而不是附加。但是我将\r\n理解为两个字符了。 - principal-ideal-domain
是的,你说的不对。Debug.Print (vbCrLf=Replace(vbCrLf,vbLf,vbCrLf)) 返回 false - principal-ideal-domain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接