文字を削除せずに、文字列を特定の文字で分割したいと思います。たとえば、入力が次if (x>4) then {x = 1}
の場合、出力は次のようになります。if, (, x, >, 4, ), then, {, x, =, 1, }
- 使用しようとします
characterSetWithCharactersInString
が、文字列から文字が削除されます。
ありがとう !
文字を削除せずに、文字列を特定の文字で分割したいと思います。たとえば、入力が次if (x>4) then {x = 1}
の場合、出力は次のようになります。if, (, x, >, 4, ), then, {, x, =, 1, }
characterSetWithCharactersInString
が、文字列から文字が削除されます。ありがとう !
NSScannerをご覧ください。
次に、次のようなことを行います
NSScanner *scanner = [NSScanner scannerWithString:myString];
BOOL foundIf = [scanner scanString:@"if" intoString:nil];
// etc...
まだ理解していない場合は、次のように動作します。
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