0

文字を削除せずに、文字列を特定の文字で分割したいと思います。たとえば、入力が次if (x>4) then {x = 1} の場合、出力は次のようになります。if, (, x, >, 4, ), then, {, x, =, 1, }

  • 使用しようとしますcharacterSetWithCharactersInStringが、文字列から文字が削除されます。

ありがとう !

4

2 に答える 2

0

NSScannerをご覧ください。

次に、次のようなことを行います

 NSScanner *scanner = [NSScanner scannerWithString:myString];
 BOOL foundIf = [scanner scanString:@"if" intoString:nil];
 // etc...
于 2012-06-03T13:23:08.430 に答える
0

まだ理解していない場合は、次のように動作します。

NSString *input = @"if (x>4) then {x = 1}";
NSMutableArray *splitArray = [NSMutableArray array];    
NSCharacterSet *specialChars = [NSCharacterSet characterSetWithCharactersInString:@"(){}[]<>{}="];    
NSScanner *scanner = [NSScanner scannerWithString:input];    
while (![scanner isAtEnd])
{
    NSString *buffer;
    if ([scanner scanCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] intoString:&buffer])
    {
        [splitArray addObject:buffer];            
    }
    else if ([scanner scanCharactersFromSet:specialChars intoString:&buffer])
    {
        [splitArray addObject:buffer];            
    }
    else 
    {
        [scanner setScanLocation:[scanner scanLocation] + 1];
    }
}    
NSLog(@"%@", splitArray);

任意の文字を specialChars に追加できます。

PS: 今日初めて NSScanner について読みましたが、これは実際に使用するための良い練習になりました! これを確認することをお勧めしますhttps://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/Scanners.html

于 2012-06-03T17:38:54.287 に答える