我有一个表示包含空格的URL的字符串,并希望将其转换为URI对象。如果我只是尝试通过创建它
String myString = "http://myhost.com/media/File Name that has spaces inside.mp3";
URI myUri = new URI(myString);
它给了我
java.net.URISyntaxException: Illegal character in path at index X
其中index X
是URL字符串中第一个空格的位置。
如何解析myString
为URI
对象?
实际上,您应该使用URI编码
“无效”字符。由于该字符串实际上包含完整的URL,因此很难对其进行URI编码。您不知道/
应该考虑哪些斜杠,哪些不是。您无法String
事先预测到这一点。确实需要在更高层次上解决该问题。那String
是哪里来的
它是硬编码的吗?然后只需相应地自己更改即可。它作为用户输入进来吗?验证并显示错误,让用户自己解决。
无论如何,如果可以确保 仅 是URL中的空格使其无效,那么您也可以仅使用逐个字符串替换%20
:
URI uri = new URI(string.replace(" ", "%20"));
或者,如果可以确保 _仅_是最后一个斜杠之后的部分需要进行URI编码,那么也可以在android.net.Uri
实用工具类的帮助下进行操作:
int pos = string.lastIndexOf('/') + 1;
URI uri = new URI(string.substring(0, pos) + Uri.encode(string.substring(pos)));
请注意,这URLEncoder
不适用于该任务,因为它旨在按照application/x-www-form-urlencoded
规则对查询字符串参数名称/值进行编码(用于HTML表单)。
问题内容: 我想从android中的字符串解析网址。示例字符串为 我想在不使用subString方法的情况下从String 解析URL 。 问题答案: 更新: 您可以使用正则表达式和正则表达式来查找文本中的所有url。 原版的: 您可以使用功能。
问题内容: 我正在尝试解析以下JSONString 这是我的代码: 有人可以帮忙,我的代码不起作用吗?我想解析标题,公司名称,类别等… 问题答案: 您需要从您的jsonstring 创建。 你有里面然后..
问题内容: 我试图从json字符串解析json数组,但它总是抛出异常。 如果我有任何错误,请告诉我。 谢谢。 这是我从服务器获取Json的代码: 这是解析JsonArray的代码: 这是我的json字符串: 问题答案: 嗨,@ Caerulius,Harish,ρяσsρєяK,Hot Licks等等。 最终,经过2天的头痛和2个不眠之夜,我解决了这个问题。而且由于您花了宝贵的时间与我讨论,因此我
问题内容: 我有一个字符串,我正在尝试将其解析为一个数字。我尝试使用,结果为2。我猜逗号是问题所在,但我将如何以正确的方式解决此问题?只需删除逗号? 问题答案: 是的,删除逗号:
问题内容: 我正在从服务器获取JSON字符串,并且已经通过代码获取了JSON字符串。但是我不知道如何解析它。 以下是我的JSON字符串 请提供任何指导或代码段。 问题答案: 使用JSON类进行解析,例如