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

私が書いているときに誰かが投稿しましたが、いずれにしても、答えは次のとおりです。

あなたはこれを難しくしすぎています。「http」をチェックするには、hasPrefixを使用する必要があります。例として、これを統合検索/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]2つの文字列が等しいかどうかを確認します。ただし、最もやりたいことはです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 に答える