字符串拆分Java中的错误

时间:2015-12-07 08:33:17

标签: java string

我认为subtitleArray的长度应该只有2,包含 www.facebook.com 你好。但不知道为什么会这样。 enter image description here

6 个答案:

答案 0 :(得分:5)

尝试改变这一点:

 value.split("|"); 

要:

  value.split("\\|"); 

如果你想要包含那些尾随空字符串,你需要使用String.split(String regex,int limit)和第二个参数(limit)的负值,如下所示:

 value.split("\\|",-1);

答案 1 :(得分:3)

这是因为Java的split方法接受Regex作为参数,与.NET中的对应方不同。

如果您不知道Regex是什么,请告诉您,|在Regex中有特殊含义。它并不意味着通常的|文字,而是意味着每个角色或类似的东西。 (我什么都不知道,不相信我。使用搜索引擎获取有关Regex中的含义的更准确信息)

但是,你如何告诉Java不要将某些东西视为特殊角色?使用反斜杠!那你如何告诉Regex不要把某些东西视为一个特殊的角色呢?使用双反斜杠!为什么?因为Java字符串中的反斜杠也是一个特殊字符。

简而言之,你需要在正则表达式中转义|,所以正则表达式是这样的:

\|

但是,Java字符串中不允许\作为文字,所以也要逃避!你最终得到了

 \\|

整件事是

split("\\|");

相当违反直觉,是吗?

答案 2 :(得分:2)

你需要逃避|

try with \\|

示例

String test="www.facebook.com|hello";

    System.out.println(test.split("\\|").length);

输出 2

答案 3 :(得分:2)

运算符|是一个特殊字符,因此我们需要将其转义。

很少有特殊运营商

\.[]{}()*+-?^$|

尝试使用dole斜杠转义,"\\|" - > .split("\\|");

答案 4 :(得分:1)

这是因为Java split()regex作为第一个参数而不是String ...因此|被解释为OR,所以你要问的是要做的是用""""分割字符串,以及为什么你得到每个字符(以及开头的空字符)

(我有点迟了......但Abdelhak的回答应该有效)

答案 5 :(得分:0)

Java Regular Expressions API是更好的方法,而不是拆分和替换。 String.split()和String.replace()方法在内部使用正则表达式apis本身, 这可能会导致您的应用程序出现性能问题。 请注意,调用String.split()会创建并编译一个新的Pattern对象。 这同样适用于String.replace()方法。 如果在紧密循环中调用split()或replace()函数,则每次编译模式都会导致程序出现性能问题。