1

文字が空白かどうかをテストするために使用できる NSCharacterSet を作成しようとしています。この文字セット:

[NSCharacterSet whitespaceAndNewlineCharacterSet]

非改行スペースが含まれていないため、独自の空白文字セットを構築しようとしています。

myWhiteSpaceCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"  \n\r\t"];

私の文字セットの最初の文字は、スペース バーで作成された単なるスペースです。2 番目の文字は、ブラウザーではスペースとして表示されますが、XCode では、改行しないスペースを表すドットとして表示されます。Mac でオプション キーを押しながらスペースバーを押して作成しました。

メンバーシップをテストするために、これを試しました:

NSString* nonBreakingSpace = @" ";
char nonBreakingSpaceChar = [nonBreakingSpace characterAtIndex:0];
if ([myWhiteSpaceCharacterSet characterIsMember:nonBreakingSpaceChar]) {
  NSLog(@"YES");
} else {
  NSLog(@"NO");
}

NSString nonBreakingSpace の文字は、option-spacebar で作成されました。それでも、このコードは NO を出力します。

私が間違っているかもしれないことは何ですか?または、可能なすべての種類の空白を含む既存の文字セットを知っている人はいますか? 私は確かにいくつか欠けている...

ありがとう!

4

2 に答える 2

3

unicharの代わりに使用しcharます。これは の戻り値の型でcharacterAtIndex:あり、非改行スペース文字は 1 バイトに収まらないため、値を暗黙的に にキャストすると値が切り捨てられますchar

于 2013-06-21T03:53:52.150 に答える
-1

次のようなスペースの NSString を検索できます。

NSString* string;
string = [[NSString alloc] initWithFormat:@"Hello World"];
if ([string rangeOfString:@" "].location == NSNotFound) {
     NSLog(@"Has space");
}
else {
     NSLog(@"Doesn't have space");
}

これの良いところは、NSStrin にスペースがあることがわかったら、[string rangeOfString@" "];そのスペースの場所にある NSRange を返す を呼び出すことでその場所を特定できることです。を呼び出してスペースを削除することもできますstring = [string stringByReplacingCharactersInRange:[string rangeOfString:@" " withString:@""];

于 2013-06-21T03:10:13.933 に答える