Android java通过特殊字符拆分字符串失败
如果url没有查询字符串,我想使用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有查询字符串,则使用&
因此,我添加了以下内容
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 usecontains
?谢谢我在Uri.parse(api_url)上添加了.buildon(),否则appendQuery会显示一个错误。所以它的Uri.parse(this.api_url.buildon().appendQueryParameter(“平台”,tokenService.getToken(AppDetailShellers.AppSettingsKeys.platform)).build().toString()对不起,我是用内存工作的-我已经更新了我的答案