Objective C - 通过查找字符的第一次和第二次出现来提取子字符串
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
是从位置零开始计算的,而不是从范围的 location
开始计算的。范围的 length
不是范围末尾的索引,而是范围的起始位置和结束位置之间的距离。
将此作为更简单的替代方案怎么样:
NSArray *components = [urlToDecode componentsSeparatedByString:@"'"];
if (components.count > 1)
{
NSString *substring = components[1];
}
我正在尝试将我的 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
是从位置零开始计算的,而不是从范围的 location
开始计算的。范围的 length
不是范围末尾的索引,而是范围的起始位置和结束位置之间的距离。
将此作为更简单的替代方案怎么样:
NSArray *components = [urlToDecode componentsSeparatedByString:@"'"];
if (components.count > 1)
{
NSString *substring = components[1];
}