2011-03-30 35 views
0

我需要根據字符「〜」分開我的應用程序打開的文件。例如,如果我保存一個字符串爲「test〜test2」的文本文件,我需要它將字符串拆分爲兩個NSString:(@「test」和@「test2」)。我怎樣才能做到這一點?如何根據某些字符在文件中分離NSString?

我寧願將字符串加載到NSTextView並讓它看單個字母,比如:

for (int integerA = 0; integerA < [textViewString length]; integerA ++) { 
    [textViewString selectRange(integerA, integerA)]; 
    if ([textViewString selectedRange] == @"~") { 
     //then split the string 
    } 
} 

唯一的問題是,有沒有「selectRange」或「的selectedRange」的方法。其他的方法是非常好的,但是我希望能夠逐一完成並將它們添加到正確的字符串中,因爲我可能需要將文本文件中的字符串拆分爲多達十五個字符串。

任何幫助非常感謝!

編輯:解決這個問題後,出現了一個新問題:我需要存儲12個值,但NSArray說以下內容。

使HIToolbox:忽略例外 '* - [NSCFArray objectAtIndex:]:指數(7)超越界限(7)' 碳事件調度內部引發

我能做些什麼來解決這個問題?

回答

2
NSArray *strings = [fileContentsAsString componentsSeparatedByString:@"~"]; 

+0

什麼對於? – Justin 2011-03-30 21:11:42

+0

這是爲了「也許我對你在問什麼感到困惑」。 – Wevah 2011-03-30 21:14:38

+0

如何訪問字符串?我試過「objectAtIndex:1」,但沒有做任何事情。 – Justin 2011-03-30 21:17:38

1

Wevah已經回答了你的問題,但我想我會指出你一對夫婦的其他東西:

  1. 用於提取子的方法被稱爲substringWithRange:,這需要一個NSRange結構作爲論據。 NSRange結構的成員是locationlength。當你想提取子,初始化一個NSRange結構,並把它傳遞給substringWithRange:提取這些字符:

    NSRange myRange = { .location = integerA, .length = 1 }; 
    NSString *mySubstr = [textViewString substringWithRange:myRange]; 
    

    不要使用此方法簡單地雖然提取字符一個接一個,對於有其他方法可用。

  2. 在Objective-C,==不能用來檢查是否兩個字符串是相等的,而必須使用isEqualToString:方法,這樣的: 「?」

    if ([mySubstr isEqualToString:@"~"]) 
    { 
        // ... 
    } 
    
+0

非常好的一點。 – Wevah 2011-03-30 21:18:37

+0

好吧,但是當我在我的應用程序中使用「==」作爲其他事情時,它就起作用了。感謝您的建議;這當然是有用的。 – Justin 2011-03-30 21:20:56

+0

@Justin:'=='可以用來比較數字,但是當你使用兩個字符串時,'=='只會告訴你他們是否引用完全相同的對象。如果有兩個不同的包含相同文本的字符串對象,'=='將失敗,但是'isEqualToString:'將成功。 – dreamlax 2011-03-30 21:23:33

相關問題