if (url.contains("|##|")) {
Log.e("url data", "" + url);
final String s[] = url.split("\\|##|");
}
我有一个包含分隔符"|##|"
的URL。
我尝试着将其分割,但未找到解决方案。
Pattern.quote
,它会为您完成这项工作:
返回指定字符串的字面模式字符串。
final String s[] = url.split(Pattern.quote("|##|"));
final String s[] = url.split("\\|##\\|");
* 转义特殊字符需要使用\
,但在Java中\
表示为\\
你需要转义第二个 |
,因为它是正则表达式的运算符:
final String s[] = url.split("\\|##\\|");
String.split(String regex)
将参数解释为正则表达式,由于竖杠字符 "|" 在正则表达式中表示逻辑或,因此你会得到一个包含单词中每个字母的数组。url.split("|");
也会得到相同的结果。
现在为什么 String.contains(CharSequence s)
在开头传递了 |##|
,因为它将参数解释为 CharSequence 而不是正则表达式。
最重要的是: 检查特定方法如何解释传递的输入。就像我们看到的,在 split() 的情况下,它将其解释为正则表达式,而在 contains() 的情况下,它将其解释为字符序列。
你可以在这里检查正则表达式结构 - http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
Pattern.quote
) - Konstantin Yovkov