1

因此,我使用下面的代码检查字符串是否以“http://”开头,然后我想添加“http://”以便能够在UIWebView.

NSString *firstString = [NSString stringWithFormat:@"%@", URL.text];
NSString *check = [NSString stringWithFormat:@"%@", @"http://"];

if (firstString != check) {
    NSString *newString = [NSString stringWithFormat:@"http://%@", URL.text];
    newString = [newString substringWithRange:NSMakeRange(7, newString.length - 7)];
    URL.text = newString;
}

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URL.text]]];`

由于某种原因,这不起作用。你知道为什么吗?

4

3 回答 3

5

有人在我写作时发帖,但无论哪种方式,这里都有一个答案:

你让这太难了。您只需要使用 hasPrefix 来检查“http”。例如,我将它用于我的统一搜索/url 栏。

- (IBAction)go:(id)sender {
    NSString *inputString = [searchField stringValue];
    NSString *outputString = [inputString stringByReplacingOccurrencesOfString:@" " withString:@"+"];

    if ([inputString hasPrefix:@"http://"]) {
        //Has Prefix
        [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:inputString]]];
    }
    else
    {
        //Does not have prefix. Do what you want here. I google it.
        NSString *googleString = @"http://google.com/search?q=";
        NSString *searchString = [NSString stringWithFormat:@"%@%@", googleString, outputString];
        [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:searchString]]];

    }

}

那是用于谷歌搜索,您可以继续使用NSString *newString = [NSString stringWithFormat:@"http://%@", URL.text];

如果您愿意,您也可以添加更多检查。祝你好运!

于 2012-12-24T19:16:34.977 回答
2

firstString != check检查两个对象是否指向内存中的相同位置。[firstString isEqualToString:check]检查两个字符串是否相等。但是,您最可能想要做的是if(![firstString hasPrefix:check]). 这将检查以确保 firstString 不以 check 开头,然后您可以将 check 附加到它的开头。或者,你可以这样做firstString = [firstString stringByReplacingOccurrencesOfString:@"http://" withString:@""];,然后你知道它永远不会以 @"http://" 开头

于 2012-12-24T19:11:31.450 回答
0

尝试通过在 loadRequest 行之前打印 URL.text 的内容NSLog(@"%@",URL.text); ,首选检查条件是if (![firstString isEqualToString:check]) {}

于 2012-12-24T19:08:35.163 回答