早上好,的NSString解析
我從連接到iPad串行設備取回的字節流。一旦連接,提供的SDK將調用已轉發字節的委託方法。
經由SDK由串行設備轉發的讀數可在以下格式:
!X1:000.0;
一旦連接到串行設備的授權方法會立即開始接收數據的 - 這可能是在不同的完成狀態即
:000.00;
我需要做的是建立一個具體的方式來拆分串行設備返回的讀數,以便我可以操縱數據。
一些嘗試的選項有:
只需串聯所接收的字符串一段固定的時間,然後在分割的NSString的「;」字符。這雖然有點效率低下,不容許我來操作數據動態
-(void)receivingDelegateMethod:(NSString *)aString {
if(counter < 60){
[self.PropertyString stringByAppendingString:aString];
}else{
NSArray *readings = [self.PropertyString componentsSeparatedByString: @";"];
}
}
通過尋找「!」確定起點字符,然後將結果的子字符串附加到NSString屬性。先前對委託方法的所有調用都將追加到此屬性,然後刪除前10個字符。
我知道還有其他選項,例如NSScanners和RegEx,但我想在浪費更多不同方法的時間之前先獲得社區意見。
感謝
首先,使用NSMutableString而不是重複的stringByAppendingString調用。至於你的算法,我會放棄字符,直到第一個「!」。 – 2012-04-14 13:11:04
另一種選擇是繼續解析接收到的片段,然後識別丟失的片段並在解析中丟棄它。 – 2012-04-14 13:13:49
(對於循環法輸入緩衝區,簡單地使用char數組可能會更好。) – 2012-04-14 13:15:50