在字符串中搜索只包含“\ n”的字符串中的换行符

时间:2011-12-07 15:52:38

标签: java

我有一个非常烦人的问题,我无法解决:(

private static final String NEW_LINE = System.getProperty("line.separator");
text = "\n";
int count = text.split(NEW_LINE).length;

count在返回1时保持返回0 我认为它是因为\n实际上不是字符串而是新行。

有没有办法解决这个问题?

4 个答案:

答案 0 :(得分:2)

Split使用正则表达式。使用“\\ n”字符串进行拆分。

答案 1 :(得分:0)

这是因为String.split()会丢弃结果数组中的任何尾随空字符串。

答案 2 :(得分:0)

如果/ n不是分隔符,则

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);
    }
}