我被这里发生的事情搞糊涂了.这应该很简单.我正在判断换行符的第一个索引,但它返回零.我在调试器中判断了该字符串,它的字符串末尾有\r\n
.
rfidstring = {String} "900083000020758\r\n"
个
if rfidstring.firstIndex(of: "\n") != nil {
print("rfid string has \\n")
}
我是不是犯了什么愚蠢的错误,却完全错过了?当我调用CONTAINS("\n")时,它可以正常工作并返回TRUE.所以当我呼叫contains()
时,它知道字符串中有\n
,但当我呼叫firstIndex(of:)
时,它不会认为字符串中有一个?
// but ...
rfidstring.contains("\n") // returns true
当我从RFID读取器读取时,我从输入流接收数据,读取器每行发送一个RFID.因此,为了确保我已经读取了整个RFID(有时它会以两个数据块的形式发送它),我需要读取到行尾.这就是为什么我要找新台词.
更新:这对我来说似乎很奇怪:
rfidstring.firstIndex(of: "\r\n") // returns valid index: 15[utf8]
rfidstring.firstIndex(of: "\r") // returns nil
rfidstring.firstIndex(of: "\n") // returns nil