在字符串中查找字符会产生错误的结果

时间:2017-02-04 16:13:56

标签: swift

我有来自蓝牙的传入字符串,这些字符串是块状的,最后看起来像:

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

2 个答案:

答案 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}时忽略该字符串}。所以试试这样:

;