gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:27:22 25 4
gpt4 key购买 nike

如果网址没有查询字符串,我想使用 ? 将平台参数附加到网址;如果网址有查询字符串,我想使用 & 将平台参数附加到网址

所以我添加了以下内容

 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("?"); 

但它会抛出悬空元字符错误。我在这方面错过了什么。为什么会失败。

最佳答案

这是 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();

关于java - Android java通过特殊字符分割字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com