更新
我不想使用 XML 解析器,因为这是所有字符串。非常小,所以请不要解析器。谢谢。
我有一个这样的 XML 字符串:<AppVersion>5</AppVersion>
. 现在我想得到那个5
。怎么办?
请注意,5
也可能是50
. 我的意思是长度会改变。
更新
我不想使用 XML 解析器,因为这是所有字符串。非常小,所以请不要解析器。谢谢。
我有一个这样的 XML 字符串:<AppVersion>5</AppVersion>
. 现在我想得到那个5
。怎么办?
请注意,5
也可能是50
. 我的意思是长度会改变。
您可以使用正则表达式:
NSString *string = @"<AppVersion>50</AppVersion>";
NSError *error;
// this looks for any sequence of digits between 0 and 9 between those two tags
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<AppVersion>([0-9]+)</AppVersion>"
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error)
NSLog(@"%s: regularExpressionWithPattern error: %@", __FUNCTION__, error);
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
NSRange range = [match rangeAtIndex:1];
if (range.location != NSNotFound)
{
NSString *result = [string substringWithRange:range];
NSLog(@"%@", result);
}
或者你可以使用扫描仪:
NSScanner *scanner = [NSScanner scannerWithString:string];
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
NSInteger i;
if ([scanner scanInteger:&i])
NSLog(@"%d", i);
我假设您有字符串并且正在寻找一种简单的方法来提取数字。这可以通过几行代码来完成。我们知道起点,因为它是一个常数。结束点可能因数字的长度而异。
NSString *xml=@"<AppVersion>5</AppVersion>";
int start=12; // Constant
NSRange end = [xml rangeOfString:@"</"]; // Depends on length
NSString *aNum = [xml substringWithRange:NSMakeRange(start, end.location-start)];
NSLog(@"%@", aNum);
三个例子表明它在一般情况下有效:
// Test 5
NSString *xml=@"<AppVersion>5</AppVersion>";
int start=12; // Constant
NSRange end = [xml rangeOfString:@"</"]; // Depends on length
NSString *aNum = [xml substringWithRange:NSMakeRange(start, end.location-start)];
NSLog(@"%@", aNum);
// Test 500
xml=@"<AppVersion>500</AppVersion>";
end = [xml rangeOfString:@"</"]; // Depends on length
aNum = [xml substringWithRange:NSMakeRange(start, end.location-start)];
NSLog(@"%@", aNum);
// Test 500000
xml=@"<AppVersion>500000</AppVersion>";
end = [xml rangeOfString:@"</"]; // Depends on length
aNum = [xml substringWithRange:NSMakeRange(start, end.location-start)];
NSLog(@"%@", aNum);
我有自己的类别来从 XML 中获取价值但是你可以尝试使用NSXMLParser