1

箇条書きのみのテキストビューを作成しました。これは、一言で言えば箇条書きのように機能します。現在、このコードを使用して配列を作成し、文字列を箇条書きで区切ります(\ u2022)

//get the text inside the textView
NSString *textContents = myTextView.text;

//make the array
NSArray *bulletedArray = [textContents componentsSeparatedByString:@"\u2022"];

//print out array 
NSLog(@"%@",bulletedArray);  

テキストを箇条書きでコンポーネントに分割することで完全に機能しますが、何も含まれていない最初の行を保持します。ですから、印刷するとこんな感じになります。

"",
"Here is my first statement\n\n",
"Here is my second statement.\n\n",
"This is my third statement. "

配列の最初のコンポーネントは""(何もありません)です。nilに等しいコンポーネントの追加を回避する方法はありますか?

ありがとう。

4

3 に答える 3

1

悲しいことに、これは作業componentsSeparatedBy...方法です。NSString

区切り文字が隣接して出現すると、結果に空の文字列が生成されます。同様に、文字列が区切り文字で開始または終了する場合、最初または最後のサブ文字列はそれぞれ空です。

最初の要素は常に空になることがわかっているので、要素から始まるサブ配列を作成できます1

NSArray *bulletedArray = [textContents componentsSeparatedByString:@"\u2022"];
NSUInteger len = bulletedArray.count;
if (bulletedArray.count) {
    bulletedArray = [bulletedArray subarrayWithRange:NSMakeRange(1, len-1)];
}

または、メソッドsubstringFromIndex:に渡す前に、文字列から最初の箇条書き文字を切り落とすために使用できます。componentsSeparatedByString:

NSArray *bulletedArray = [
    [textContents substringFromIndex:[textContents rangeOfString:@"\u2022"].location+1]
    componentsSeparatedByString:@"\u2022"];
于 2012-08-07T13:28:52.417 に答える
0
[[NSMutableArray arrayWithArray:[textContents componentsSeparatedByString:@"\u2022"]] removeObjectIdenticalTo:@""];

それはトリックをする必要があります

于 2012-08-07T13:28:42.577 に答える
0

箇条書きには常にインデックス1の箇条書きがありますが、文字列から最初のインデックスを切り取ることができます。

//get the text inside the textView
if (myTextView.text.length > 1) {
    NSString *textContents =[myTextView.text substringFromIndex:2];

    //make the array
    NSArray *bulletedArray = [textContents componentsSeparatedByString:@"\u2022"];

    //print out array    
    NSLog(@"%@",bulletedArray);     
}

もちろん、空のテキストは避けてください。これにより、arrayOutOfBounds例外が発生します。

于 2012-08-07T13:56:45.197 に答える