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>