我有一个非常烦人的问题,我无法解决:(
private static final String NEW_LINE = System.getProperty("line.separator");
text = "\n";
int count = text.split(NEW_LINE).length;
count
在返回1时保持返回0
我认为它是因为\n
实际上不是字符串而是新行。
有没有办法解决这个问题?
答案 0 :(得分:2)
Split使用正则表达式。使用“\\ n”字符串进行拆分。
答案 1 :(得分:0)
这是因为String.split()会丢弃结果数组中的任何尾随空字符串。
答案 2 :(得分:0)
count只会为1。 在下面: -
private static final String COLON = ":";
public static void main(String[] args)
{
String text = ":";
int count = text.split(COLON).length;
System.out.println("len = " + count);
}
计数也将为零。
分开抛出尾随的空字符串 例如。 [x] [] []变为[x],但[x] [] [] [y]保持原样。
答案 3 :(得分:0)
正如Peter J所说,分裂会抛弃空的弦。
您可以使用另一个方法public String [] split(String regex,int limit),并将限制设置为-1。这将导致模式根据需要多次应用,并且结果数组可以是任何长度,它不会丢弃尾随的空字符串。
运行您发布的代码总是为我返回1。那是因为它总是返回字符串[] = {“\ n”}
我将您的NEW_LINE更改为“\\ n”,它将返回长度2。 string [] = {“”,“”}您将获得'\ n'前面的空字符串和'\ n'后面的空字符串。
public class splitTest {
public static void main(String[] args) {
String text = "\n";
int count = text.split("\\n", -1).length;
System.out.println("count = " + count);
}
}