2011-12-07 45 views
2

我有一個非常惱人的問題,我無法修復:(搜索字符串只是包含「 n」個

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

count保持返回0,當它應該返回1 我想在字符串中的換行符其原因\n心不是實際上是一個字符串,但一個換行符。

是有辦法解決這一問題?

+0

你想要數newLine字符嗎? – Fred

+0

運行該代碼給我計數1. – Averroes

+0

您的行分隔符可能不是\ n。您的測試可能不起作用,但它可以在真實文件上工作。 – toto2

回答

2

拆分使用正則表達式。使用「\\ N」的字符串分割。

0

這是因爲String.split()放棄了結果數組中所有尾隨的空字符串。

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]保持原樣。

0

正如彼得J說分裂扔掉尾隨空弦。

您可以使用另一個方法public String [] split(String regex,int limit),其限制設置爲-1。這將導致該模式按需要應用多次,結果數組可以是任意長度,它不會丟棄尾隨的空字符串。

運行您發佈的代碼總是會爲我返回1。這是因爲它總是返回字符串[] = { 「\ n」}

我改變了你對NEW_LINE 「\\ N」,它將返回長度爲2 字符串[] = { 「」, 「」}您將在'\ 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); 
    } 
} 
相關問題