我的多行字符串文字中有哪种换行符?

What kind of newline character is in my multiline string literal?

我正在尝试用某些东西替换换行符或将其删除,但我什至无法弄清楚它是哪种换行符。我试过 \n 和 \r 作为正则表达式:

var testStr =
"""
    .db , , c, , , , , , 
    .db , , c, , , , , , 
    .db , , e, e, , , a, , 
    .db , , e, e, , , a, , 
    .db , a, , , , , a, , [=10=]e, [=10=]c
    .db , , , , e, c, , , 
    .db , a, , , , [=10=]e, , , 
    .db [=10=]
"""

testStr = testStr.replacingOccurrences(of: "^\r*", with: "!", options: .regularExpression)
testStr = testStr.replacingOccurrences(of: "^\n*", with: "!", options: .regularExpression)

print(testStr) // does not replace new lines

看起来您使 RegEx 变得比实际需要的复杂一些。如评论中所述,您可以删除开头的锚点 ^*。多行文字创建的换行符被 \n

捕获

此外,请记住您的缩进对于多行字符串文字很重要。您希望结尾 """ 位于文本缩进的级别。

var testStr =
"""
.db , , c, , , , , , 
.db , , c, , , , , , 
.db , , e, e, , , a, , 
.db , , e, e, , , a, , 
.db , a, , , , , a, , [=10=]e, [=10=]c
.db , , , , e, c, , , 
.db , a, , , , [=10=]e, , , 
.db [=10=]
"""

testStr = testStr.replacingOccurrences(of: "\n", with: "!", options: .regularExpression)

print(testStr)

产量:

.db , , c, , , , , , !.db , , c, , , , , , !.db , , e, e, , , a, , !.db , , e, e, , , a, , !.db , a, , , , , a, , [=15=]e, [=15=]c!.db , , , , e, c, , , !.db , a, , , , [=15=]e, , , !.db [=15=]