簡體   English   中英

目標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是從位置0開始計算的,而不是從范圍的location 范圍的length不是范圍終點的索引,而是范圍的起始位置與其終點之間的距離。

如何將其作為更簡單的選擇:

NSArray *components = [urlToDecode componentsSeparatedByString:@"'"];
if (components.count > 1)
{
    NSString *substring = components[1];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM