【发布时间】:2015-09-02 07:42:48
【问题描述】:
我有一个 URL “ssh://root:zstackqwe:!@#@172.16.36.184”,其中在密码部分包含“@”和“:”。我使用 java.net.URI 来包装字符串,如:
URI u1 = new URI("ssh://root:zstackqwe:!@#@172.16.36.184/");
System.out.println(u1.getAuthority());
System.out.println(u1.getHost());
输出是:
root:zstackqwe:!@
null
权限部分正确,而主机部分返回null。应该如何正确处理那些特殊字符?
更新:
字符串“ssh://root:zstackqwe:!@#@172.16.36.184”是一个没有任何编码的原始字符串,从 API 传递到我的应用程序。我无法使用 UIR(string) 以外的构造函数。所以我正在寻找一种方法来处理原始字符串,使其与 jave.net.URI 一起使用。
【问题讨论】:
-
可能转义字符串
-
我遇到了这个问题,但我记不清这是否是正确的解决方案:您尝试过
zstackqwe\\:!\\@#吗? -
试试:
URI u1 = new URI("ssh://root:zstackqwe:!@\\#@172.16.36.184/"); -
我无法使用除 UIR(string) 之外的构造函数,因为字符串是由 API 传递的。
-
如果您是从某个 API 获得的,那么您可以尝试将其拆分为自己的部分,然后使用以下答案中的其他方法。