【问题标题】:Is there a clean way to check if a String contains a char from an other String有没有一种干净的方法来检查一个字符串是否包含来自另一个字符串的字符
【发布时间】:2018-02-09 14:56:46
【问题描述】:

我目前正在尝试从 URL 中捕获特殊字符,以将它们更改为十六进制值(例如:“This shop”应该转换为“This%20shop”)。
我想知道是否有一些干净的方法是查看字符串以找到每个特殊字符并将它们替换为它们的 ascii 值。 我尝试这样做是因为我必须使用 GET 将 PHP 参数传递到 url。

以下是 url 的示例: www.mysite.com/page?adress=I am Living here!


我的代码实际上从 URL 中重新放置了 '%' 和 '',但我想更改我定义的任何特殊字符。 这是我到目前为止所做的:

private final String specialChars = "!@\\[]`#$%&'()*+-<>=?";
public URL getURL(){
    String tempUrl = baseURL;
    Set<String> keys = this.arguments.keySet();
    for (Map.Entry<String, String> entry : arguments.entrySet()) {
        String value = entry.getValue();

        if(entry.getValue().contains(specialChars)){
            Log.e("INFO", "THIS URL CONTAINS SPECIAL CHARS");
        }

        //Replacing % char
        if(entry.getValue().contains("%")){
            Log.i("URL BUILD INFO", "URL ARGS CONTAINS '%'");
            value = entry.getValue().replace("%", "%25");
        }
        //Replacing spaces
        if(entry.getValue().contains(" ")){
            Log.i("URL BUILD INFO", "URL ARGS CONTAINS SPACE");
            value = entry.getValue().replace(" ", "%20");
        }

        baseURL += entry.getKey() + "=" + value + "&";
    }
    try{
        this.url = new URL(baseURL);
    } catch(MalformedURLException e){
        Log.e("URL MALFORMED", "YOUR IS MALFORMED");
        e.printStackTrace();
    }
    Log.d("URL IS VALID", url.toString());
    return url;
}

根据我对String documentation 的理解,只有当我的 URL 与我的 specialChars charSequence 完全匹配时,matches 方法才应该返回 true,这不是我想要的。但是我在String documentation 上找不到任何其他方法来实现我想要实现的目标。

【问题讨论】:

标签: java regex string pattern-matching


【解决方案1】:

如果您只是想处理 url 编码,则有现有的解决方案 - 请参阅 URLEncoderURLDecoder(之前的好答案 here

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多