Objective c从长字符串中提取数字

时间:2015-12-03 08:44:27

标签: objective-c nsstring

我有一个像这样的字符串

<p style="margin-bottom: 0pt;"> 
 <a data-mce-href="NewdownloadSingle? 
   db_value=Test_2.jpg%23ms_attach_delimiter%23784123161&id=102003&proc=1085821&processInstanceId=1085821&attach_seq=203&oper=R" 
   href="javascript:void(0)"  
   onclick="parent.openRTFAttachment(784123161,link);" 
   title="Test_2.jpg" alt="Test_2.jpg" target="_blank">Test_2.jpg 
 </a> 
</p> 

我想找到parent.openRTFAttachment(784123161,link)之间的数字

我想提取784123161如何在目标C

中完成

3 个答案:

答案 0 :(得分:0)

您可以使用正则表达式,也可以使用NSScanner。这些解决方案中的任何一个都将扫描字符串以查找要启动的某些模式,并允许您在其间和定义的结束模式之间提取字符串的一部分。这将为您提供您可以使用/转换的数字的字符串。

从您的评论中看起来您可以只做一个简单的字符串替换:

NSString *str = @"This is your string";
str = [str stringByReplacingOccurrencesOfString:@"Source number"
                                     withString:@"Destination number"];

答案 1 :(得分:0)

您可以尝试以下代码:

netstat -nltp

来自parent.openRTFAttachment的提取号码

答案 2 :(得分:0)

它可能过于复杂,但为您完成工作:

NSString *_string = @"<p style=\"margin-bottom: 0pt;\"> <a data-mce-href=\"NewdownloadSingle? db_value=Test_2.jpg%23ms_attach_delimiter%23784123161&id=102003&proc=1085821&processInstanceId=1085821&attach_seq=203&oper=R\" href=\"javascript:void(0)\"  onclick=\"parent.openRTFAttachment(784123161,link);\" title=\"Test_2.jpg\" alt=\"Test_2.jpg\" target=\"_blank\">Test_2.jpg </a> </p> ";

获得原始字符串后,您可以执行此操作:

NSError *_error = nil;
NSRegularExpression *_regExp = [NSRegularExpression regularExpressionWithPattern:@"\\(\\s*(\\d*)\\s*," options:0 error:&_error];
NSArray *_matches = [_regExp matchesInString:_string options:NSMatchingReportCompletion range:NSMakeRange(0, _string.length)];
NSString *_yourNumber = nil;
if (_matches.count > 0) {
    NSTextCheckingResult *_result = [_matches firstObject];
    if (_result.numberOfRanges > 1) {
        _yourNumber = [_string substringWithRange:[_result rangeAtIndex:1]];
    }
}
NSLog(@"%@", _yourNumber);

然后在控制台上显示清楚:

`784123161`

注意:如果更改源的格式,您可能需要优化初始模式。如果原始输入字符串中有多个匹配项,则会找到第一个匹配项。