[英]Objective-C NSRegularExpressions, finding first occurrence of numbers in a string
[英]Objective C - Extract substring by finding first and second occurrence of a character
我正在嘗試將我的Android應用程序移植到iOS。 我需要提取出現在單引號'
字符的第一次和第二次出現之間的字符串。
例如,從javascript:popUpWindow7('news_details.asp?slno=2029',620,300,100,100,'yes')
,我需要提取news_details.asp?slno=2029
。
在Java中,我這樣做:
String inputUrl = "javascript:popUpWindow7('news_details.asp?slno=2029',620,300,100,100,'yes')";
StringBuilder url = new StringBuilder();
url.append(inputUrl.substring(inputUrl.indexOf('\'')+1,
inputUrl.indexOf('\'',inputUrl.indexOf('\'')+1)));
我在Objective C中找不到類似於indexOf的任何方法,所以我做了以下工作:
NSUInteger length =0;
NSMutableString* url;
NSString* urlToDecode = @"javascript:popUpWindow7('news_details.asp?slno=2029',620,300,100,100,'yes')";
for (NSInteger i=[urlToDecode rangeOfString:@"\'"].location +1; i<urlToDecode.length; i++) {
if([urlToDecode characterAtIndex:i]== '\'')
{
length = i;
break;
}
}
NSRange range = NSMakeRange([urlToDecode rangeOfString:@"\'"].location +1, length);
[url appendString:[urlToDecode substringWithRange:range]];
我究竟做錯了什么?
代碼的問題在於,范圍的length
是從位置0開始計算的,而不是從范圍的location
。 范圍的length
不是范圍終點的索引,而是范圍的起始位置與其終點之間的距離。
如何將其作為更簡單的選擇:
NSArray *components = [urlToDecode componentsSeparatedByString:@"'"];
if (components.count > 1)
{
NSString *substring = components[1];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.