2011-11-17 88 views
0

我在原始文件中有日誌數據。它看起來像這樣:拆分字符串並刪除java中的每一秒空間

"2 A U W 2 0 1 1 1 1 1 6 0 0 1 0 0 0  U S E R N 1  F T Y 0 0 0 0 0 0 D 9   2 A I L 2 0 1 1 1 1 1 6" 

等等。

我需要在等長的消息(從「2 A U W」到「4 A I L」400字節)的消息上對此字符串進行子串處理。這是由String as = s.substring(0,400).toLowerCase()。但這對我來說還不夠。我想要這樣的消息:

2auw 
20011111600100 
usern1 
fty000000d9 

任何人都可以幫忙嗎?

+0

哪裏是你的問題? –

回答

1

您可以添加反斜槓n「\ n」爲您的字符串添加換行符。

我不知道這是否是最好的方式,但它是如何做這件事: 如果你知道你需要換行,你可以串並添加反斜槓ñ。事情是這樣的:

String s = as.substring(0,4) + "\n" + as.substring(4,18) + "\n" + //....and so on 

希望它有助於

+0

謝謝!這是有幫助的:)我用你的建築做一個字符串與/ n。然後,我將所有空間都替換爲空。它的工作原理。感謝Naveen Babu和你,Marimaf。 :) – Smartydoc

+0

你是非常歡迎:) – marimaf

1

這將完成您的工作。如果你有很多像上面這行的數據,我們將不得不去想一些其他的邏輯。我認爲它不會適用於數百萬條記錄。

String asd = "2 A U W 2 0 1 1 1 1 1 6 0 0 1 0 0 0  U S E R N 1  F T Y 0 0 0 0 0 0 D 9   2 A I L 2 0 1 1 1 1 1 6"; 
asd = asd.replaceAll("  ", "\n"); 
asd= asd.replaceAll(" ", ""); 
System.out.println(asd); 

請注意"U S E R N 1""F T Y 0 0 0 0 0 0 D 9"之間的空間同時具有空間的minumum數。所以,我已經使用了這些空格來插入新的行字符。
如果字符之間的空格大於此字符串的兩倍,則該邏輯將導致錯誤的輸出。即:連續有<12 spaces>
爲了解決這個問題,您可以在打印之前插入此代碼。但是隻有在發生這種情況時才使用它。

asd= asd.replaceAll("\n\n", "\n"); 
+0

謝謝。我使用字符串s.replaceAll(「」,「」);和由Marimaf – Smartydoc

-1

你試過:

String[] split = s.split("\\s+"); 

您可能需要調整REG-EXP。

+0

建設沒有探討這是如何工作的? – DForck42