Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java通过特殊字符拆分字符串失败_Java_Android - Fatal编程技术网

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

Android java通过特殊字符拆分字符串失败,java,android,Java,Android,如果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("\

如果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);
    }
}
即使url不包含

url示例

http://test.com
使用上述代码解析为

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

我试着添加

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

但是它抛出了一个悬挂元字符的错误。我错过了什么。为什么会失败。

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

您也可以考虑将字符串解析为URI,因为您可能不需要此检查,而可以使用:

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

当正则表达式不匹配时,为什么希望
split
不返回任何内容?你核实你的要求了吗?另外,为什么不使用just use
contains
?谢谢我在Uri.parse(api_url)上添加了.buildon(),否则appendQuery会显示一个错误。所以它的Uri.parse(this.api_url.buildon().appendQueryParameter(“平台”,tokenService.getToken(AppDetailShellers.AppSettingsKeys.platform)).build().toString()对不起,我是用内存工作的-我已经更新了我的答案