如何从字符串中复制括号内的子字符串,然后将其删除?

时间:2012-05-31 07:32:19

标签: ios xcode

我得到的文字如下: -  1. e4 e5 2. Nf3 Nc6 3. Bb5 {This opening is called the Ruy Lopez.} 3... a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15. Nb1 h6 16. Bh4 c5

我需要删除{}内的注释}但在此之前我需要将其与移动的索引号一起复制,如3或Bb5。

为了删除我正在使用的字符串

- (NSString *)stringFilter:(NSString *)targetString {

    NSScanner *theScanner;
    NSString *text = nil;

    theScanner = [NSScanner scannerWithString: targetString];

    while ([theScanner isAtEnd] == NO) {

        [theScanner scanUpToString:@"{" intoString:NULL] ; 

        [theScanner scanUpToString:@"}" intoString:&text] ;

        targetString = [targetString stringByReplacingOccurrencesOfString:
                      [NSString stringWithFormat:@"%@}", text]
                                                           withString:@""];

    } 

    return targetString;

}

我正在寻找如何复制该字符串并将其存储在字典或数组中谢谢。

1 个答案:

答案 0 :(得分:0)

我使用以下类别方法来获取'('&')'之间的内容。你可以很容易地适应它......

编辑:完整性的完整类别

//  NSString+Parenthesis.h
#import <Foundation/Foundation.h>

@interface NSString (Parenthesis)

-(NSString*)contentsInParenthesis;

@end

//  NSString+Parenthesis.m
#import "NSString+Parenthesis.h"

@implementation NSString (Parenthesis)

-(NSString*)contentsInParenthesis {
    NSString *subString = nil;
    NSRange range1 = [self rangeOfString:@"("];
    NSRange range2 = [self rangeOfString:@")"];

    if ((range1.length == 1) && (range2.length == 1) && (range2.location > range1.location)) {
        NSRange range3;
        range3.location = range1.location+1;
        range3.length = (range2.location - range1.location)-1;

        subString = [self substringWithRange:range3];
    }

    return subString;
}

@end