2015-05-17 132 views
0

我使用Apache POI從.doc文件讀入,因此,我有一個包含大量換行符和製表符的字符串ArrayList原始文檔格式化檢查一個字符串是否以換行符後的整數開頭

我需要檢查一個字符串是否包含整數,因爲它是第一個字符。然而字符串經常出來這樣的:

enter image description here

現在第一個字符串,在位置[3]是好的,儘管它包含一個整數以後,但在位置字符串[4]啓動與\n\r\n5.2 ,因此以一個整數開始,是不可接受的,應該被忽略。 但是,我似乎無法找到檢查這些字符串之一是否以整數開頭的方法。我試圖使用Java的

theString.replaceAll("\\\\n",""); 
theString.replaceAll("\\\\r",""); 

替換字符串中的所有\ n和\ r然而,這似乎是失敗了,我已經嘗試使用正則表達式使用一個子,以確定是否字符串本身具有的整數開始無效,因爲製表符和換行符的數量各不相同。

有沒有人有一個爲什麼我可以確定是否字符串(畢竟換行符和製表符)以整數開頭?

第二示例:

enter image description here

代碼在使用中:

tempLineBreakRemoval = listoflines.get(x); 
    tempLineBreakRemoval = tempLineBreakRemoval.replaceAll("\\\n", ""); 
    //Selection Statement to only add to "tempCommentString" if does not start with integer 
    tempCommentString += listoflines.get(x); 
    x++; 
+2

'然而這似乎失敗了'。你的意思是'replaceAll'方法沒有做到它應該做的?這可能是因爲您需要將'replaceAll'的返回值重新分配給'theString',因爲Java中的String是不可變的。另外,爲什麼你使用'\\\\ n'和'\\\\ r'? – CKing

+2

另外''\\\\ n「'匹配文字反斜槓,後跟字母'n' - 如果這些是實際的換行符,則應該用''」'替換''[\ r \ n] +「'。 –

+1

'trim'還刪除前導和尾隨空白,例如'theString = theString.trim();' – copeg

回答

0

對於一旦\\\\n\\n解決特殊字符之後。因此,如果您希望它是\n,那麼您必須使用\\n,這將是字符\和字母n。這對於replaceAll來說是正確的。如果需要替換字符,您甚至必須直接使用'\n'\r\t相同。

但是我更喜歡這個單一的正則表達式。這個電話應該這樣做:theString.matches("\\s*\\d.*");\s代表任何數字的任何空格字符\d,代表任何其他尾隨字符的.

+0

如果任何數字出現在空白字符後面,它會返回true,這是否包含空格本身? – kxdan

+0

是的。如果你不想這樣做,你將不得不使用像這樣的正則表達式。「[\\ n \\ r \\ t] * \\ d。*」' – findusl

+0

正則表達式是針對'theString的。match'方法不用於替換所有方法;)調用'tempLineBreakRemoval.matches(「[\\ n \\ r \\ t] * \\ d。*」);'如果返回true,則它以數字開頭,如果爲false它不是。 – findusl

相關問題