Objective c 如何在'&燃气轮机';在目标C的空间之后呢?

Objective c 如何在'&燃气轮机';在目标C的空间之后呢?,objective-c,string,cocoa-touch,parsing,Objective C,String,Cocoa Touch,Parsing,以下是一个例子: ,我想删除thsisjijdsnjdnjsd 如何检测前面和空格后面的字符串,并在目标C中将其修剪掉?另外,请提醒我,我不知道aNodeName或thsisjijdsnjdnjsd,因为数据可能会变成这样: ,我需要删除zxzxxzxzxz基本上你有两个选择 完整的基于命令行的示例 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autor

以下是一个例子:

,我想删除
thsisjijdsnjdnjsd

如何检测
前面和空格
后面的字符串,并在目标C中将其修剪掉?另外,请提醒我,我不知道
aNodeName
thsisjijdsnjdnjsd
,因为数据可能会变成这样:


,我需要删除
zxzxxzxzxz

基本上你有两个选择


完整的基于命令行的示例

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSString *string = @"<aNodee thsisjijdsnjdnjsd> ";
        NSError *error;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<([a-zA-z]+)( .*)>" options:NSRegularExpressionCaseInsensitive
                                                                                 error:&error];
        NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
        [matches enumerateObjectsUsingBlock:^(NSTextCheckingResult *result, NSUInteger idx, BOOL *stop) {
            NSString* nodeName = [string substringWithRange:[result rangeAtIndex:1]];
            NSString* value = [string substringWithRange:[result rangeAtIndex:2]];
            NSLog(@"Regex approach: %@ %@",nodeName, value);

            NSLog(@"Regex approach: %@", [string stringByReplacingOccurrencesOfString:value withString:@""]);
        }];




        NSScanner *scanner = [NSScanner scannerWithString:string];
        BOOL recordingValue = NO;

        NSMutableString *valueString = [@"" mutableCopy];
        [scanner setScanLocation:0];
        while (![scanner isAtEnd]) {

            NSString *charAtlocation = [string substringWithRange:NSMakeRange([scanner scanLocation], 1)];
            if ([charAtlocation isEqualToString:@" "]){
                recordingValue = YES;
                [valueString appendString:@" "];
            } else{
                if ([charAtlocation isEqualToString:@">"]){
                    recordingValue = NO;
                } else if (recordingValue) {
                    [valueString appendString:charAtlocation];
                }
            }
            [scanner setScanLocation:[scanner scanLocation]+1];
        } ;


        NSLog(@"Scanner approach: %@", valueString);
        NSLog(@"Scanner approach: %@", [string stringByReplacingOccurrencesOfString:valueString withString:@""]);
    }
    return 0;
}
#导入
int main(int argc,const char*argv[]
{
@自动释放池{
NSString*字符串=@“”;
n错误*错误;
NSRegularExpression*regex=[NSRegularExpression regular expression with pattern:@”选项:NSRegularExpression不区分大小写
错误:&错误];
NSArray*matches=[regex matchesisnstring:string选项:0范围:NSMakeRange(0,[string length]);
[匹配enumerateObjectsUsingBlock:^(NSTextCheckInResult*结果,NSUInteger idx,BOOL*停止){
NSString*nodeName=[string substringWithRange:[结果范围索引:1]];
NSString*值=[string substringWithRange:[结果范围索引:2]];
NSLog(@“正则表达式方法:%@%@”,节点名称,值);
NSLog(@“Regex方法:%@,[string stringByReplacingOccurrencesOfString:value with string:@“]);
}];
NSScanner*scanner=[NSScanner scannerWithString:string];
BOOL记录值=否;
NSMutableString*valueString=[@”“mutableCopy];
[扫描仪设置扫描位置:0];
而(![scanner isattend]){
NSString*charAtlocation=[string substringWithRange:NSMakeRange([scanner scanLocation],1)];
if([CharacterLocation isEqualToString:@”“){
记录值=是;
[valueString appendString:@”“;
}否则{
if([CharacterLocation IsequalString:@“>”])){
记录值=否;
}else if(记录值){
[valueString appendString:CharacterLocation];
}
}
[扫描仪设置扫描位置:[扫描仪扫描位置]+1];
} ;
NSLog(@“扫描仪方法:%@”,valueString);
NSLog(@“扫描程序方法:%@,[string stringByReplacingOccurrencesOfString:valueString with string:@”“]);
}
返回0;
}
输出:

Regex approach: aNodee  thsisjijdsnjdnjsd
Regex approach: <aNodee> 
Scanner approach:  thsisjijdsnjdnjsd
Scanner approach: <aNodee>
Regex方法:aNodee-thsisjijdsnjdnjsd
正则表达式方法:
扫描仪方法:thsisjijdsnjdnjsd
扫描仪方法:

更新了问题,我不知道我知道
aNodeName
我的正则表达式将为您提供节点名称和其他字符串添加基于nsscanner的示例-相信我this@KateGregory-我们不知道这是否用于html解析。但请注意,我在回答中添加了您作为警告提供的链接,以防它用于html解析。
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSString *string = @"<aNodee thsisjijdsnjdnjsd> ";
        NSError *error;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<([a-zA-z]+)( .*)>" options:NSRegularExpressionCaseInsensitive
                                                                                 error:&error];
        NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
        [matches enumerateObjectsUsingBlock:^(NSTextCheckingResult *result, NSUInteger idx, BOOL *stop) {
            NSString* nodeName = [string substringWithRange:[result rangeAtIndex:1]];
            NSString* value = [string substringWithRange:[result rangeAtIndex:2]];
            NSLog(@"Regex approach: %@ %@",nodeName, value);

            NSLog(@"Regex approach: %@", [string stringByReplacingOccurrencesOfString:value withString:@""]);
        }];




        NSScanner *scanner = [NSScanner scannerWithString:string];
        BOOL recordingValue = NO;

        NSMutableString *valueString = [@"" mutableCopy];
        [scanner setScanLocation:0];
        while (![scanner isAtEnd]) {

            NSString *charAtlocation = [string substringWithRange:NSMakeRange([scanner scanLocation], 1)];
            if ([charAtlocation isEqualToString:@" "]){
                recordingValue = YES;
                [valueString appendString:@" "];
            } else{
                if ([charAtlocation isEqualToString:@">"]){
                    recordingValue = NO;
                } else if (recordingValue) {
                    [valueString appendString:charAtlocation];
                }
            }
            [scanner setScanLocation:[scanner scanLocation]+1];
        } ;


        NSLog(@"Scanner approach: %@", valueString);
        NSLog(@"Scanner approach: %@", [string stringByReplacingOccurrencesOfString:valueString withString:@""]);
    }
    return 0;
}
Regex approach: aNodee  thsisjijdsnjdnjsd
Regex approach: <aNodee> 
Scanner approach:  thsisjijdsnjdnjsd
Scanner approach: <aNodee>