我有来自蓝牙的传入字符串,这些字符串是块状的,最后看起来像:
sentData1;
我想在最后找到;
时打印它,所以:
if let str = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
{
//data comes in chunks
if (str.range(of: ";") == nil){dataIn+=str; return} //stop if not ;
print("BLE:DATAIN:",dataIn ) //final
dataIn=""
}
始终会打印:BLE:DATAIN: sent
。
我检查了传入的数据是否符合预期,唯一不会停止半字的方法是,如果我将字符更改为@
或其他内容,那么它将收集整个单词,而不是停留在sent
。
还尝试使用NSNotfound
。
答案 0 :(得分:1)
试试这个:
if let str = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
{
//data comes in chunks
if (str.range(of: ";") != nil){dataIn+=str; return} //stop if not ;
print("BLE:DATAIN:",dataIn ) //final
dataIn=""
}
答案 1 :(得分:1)
在if
条件下,您检查它是否包含;
,但为此您还需要添加该字符串,因为当它包含{{1}时忽略该字符串}。所以试试这样:
;