0

特殊文字を含む文字列を作成した後、別の NSString を反復処理して、目的の NSString と新しいものとの間に一致が見つかるかどうかを確認しようとしています。ただし、 rangeOfString は特殊文字でハングアップしているようです。

本質的にはこれがアイデアであり、問​​題は NSLog が決して "Hurray!" を読み取らないことです。平方根記号が見つからないためです。

NSString *goal = @"√"

NSString *input =@"Messing with Sasquatch √"

int strLength = [input length];
int strpos = 0;
unichar ch = [input characterAtIndex:strpos];


while (strpos < strLength)
{
   ch = [input characterAtIndex:strpos];

   if ([goal rangeOfString:[NSString stringWithFormat:@"%c",ch]].location != NSNotFound)
      NSLog(@"Hurray!");

   ++strpos;
}

ありがとう!

4

1 に答える 1

0

この問題の残念な点は、私がもともとこれを C で書いていたということです。これは、この目的のためにははるかに効率的な形式です。ただし、この特定の例では、単に NSString に忠実であり続けることで問題を解決できました。

つまり、char に移動してから戻るのではなく、次のように長さ 1 の substr を作成しました。

NSRange subRange = {strpos, 1};
NSString *substr = [input substringWithRange:subRange

次に、ループ内で、次のように substr を使用します。

 if ([goal rangeOfString:substr].location != NSNotFound)
      NSLog(@"Hurray!");
于 2013-09-24T18:37:05.573 に答える