0

我收到如下文字:- 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;

}

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

4

1 回答 1

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
于 2012-05-31T07:46:18.100 回答