2015-10-06 32 views
-2

我有一個帶有不可見十進制值作爲前綴的隨機名字符串。小數=名字長度。我需要檢索名稱。顯然它們的長度不同。我想要一個數組中的名字,所以我的想法是使用stringByReplacingOccurrencesOfString:withString。我在名稱的開始和結尾處實施「主幹」一詞。雖然我無法訪問的域名(十進制值),結束相應的指數,這裏是我的代碼:在NSString中獲取不可見的十進制值objc

trimmed1 = [[trimmed1 stringByReplacingOccurrencesOfString:sp withString:@"trunk"]mutableCopy]; 

NSString *trunk = @"trunk%d";// add the ghost decimal at the end of prefix in order to get its value; 

NSRange range =[trimmed1 rangeOfString:trunk]; 

int ghost= [trunk characterAtIndex:5]; 

NSMutableString *mu = [NSMutableString stringWithString:trimmed1]; 

[mu insertString : @"trunk" atIndex :range.location+range.length+ ghost]; 

我得到的錯誤[__NSCFString insertString:atIndex:]: Range or index out of bounds

+0

它應該有一個字符串格式%d的值嗎?NSString * trunk = @「trunk%d」; – Vig

+0

是他們是一個十進制值,可以改變 – user306147

+0

在這種情況下,你不應該有像[NSString stringWithFormat:@「trunk%d」,value]; – Vig

回答

0

您誤解了%d的含義。

在用於創建的格式中,它表示「插入格式化爲字符串的整數參數的值」。

匹配對另一個字符串的一個字符串表示「匹配字符%d」,即。反正它並不特別。

由於您的字符串不包含字符「trunk%d」,您將收到錯誤消息。如果您檢查返回值rangeOfString:,您會發現它正在返回一個失敗指示 - 請閱讀文檔以瞭解如何測試該值。

對於試圖查看NSString方法rangeOfCharactersFromSet:的任意十進制數的匹配的簡單任務。

您還可以使用類NSScannerNSRegularExpression來解決此問題。

HTH