繁体   English   中英

Android java 通过特殊字符拆分字符串失败

[英]Android java split string via special character fails

我想将平台参数附加到 url 与? 如果 url 没有查询字符串并且使用&如果 url 有查询字符串

所以我添加了以下内容

 String api_url;
 //costructor next to assign apiurl value

 //method to extract url and process request
 processData(){
    String apiUrl = "";
    String[] urlParams = this.api_url.split("\\?");
    if (urlParams.length > 0){
        apiUrl = this.api_url+"&platform="+tokenService.getToken(AppDetailsHelpers.AppSettingsKeys.PLATFORM);
    }else {
        apiUrl = this.api_url+"?platform="+tokenService.getToken(AppDetailsHelpers.AppSettingsKeys.PLATFORM);
    }
}

即使urlParams不包含?

url 示例

http://test.com

用上面的代码解决为

http://test.com&platform=12

但我希望它是http://test.com?platform=12

我试过添加

String[] urlParams = this.api_url.split("?"); 

但它会抛出Dangling metacharacter的错误。 我错过了什么。 为什么会失败。

这是String#split的预期行为。 运行"http://test.com".split("\\?")返回一个包含一个元素"http://test.com"的数组。 因此,只需将您的条件更新为if(uriParams.length > 1)

您还可以考虑将您的 String 解析为 Uri,因为您可能不需要此检查,而可以使用:

Uri.parse(api_url)
    .buildUpon()
    .appendQuery("platform", tokenService.getToken(AppSettingsKeys.PLATFORM))
    .build().toString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM