2011-11-17 50 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