【问题标题】:Split string and delete every second space in java在java中拆分字符串并删除每隔一个空格
【发布时间】:2011-11-17 05:54:50
【问题描述】:

我在原始文件中有日志数据。它看起来像这样:

"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

有人可以帮忙吗?

【问题讨论】:

    标签: java split format spaces


    【解决方案1】:

    您可以添加一个反斜杠 n "\n" 来为您的字符串添加换行符。

    我不确定这是否是最好的方法,但这是一种方法: 如果您知道需要换行符的位置,则可以子串并添加反斜杠 n。像这样的:

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

    希望对你有帮助

    【讨论】:

    • 谢谢!这很有帮助:) 我用你的构造用 /n 制作了一个字符串。然后我什么都没有替换所有空格。它有效。感谢 Naveen Babu 和你,Marimaf。 :)
    【解决方案2】:

    这将完成您的工作。如果你有很多像上一行这样的数据,我们将不得不想出一些其他的逻辑。我认为它不适用于数百万条记录。

    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" 之间的空格具有最小数量的同时空格。因此,我使用了该数量的空格来插入换行符。
    如果字符之间的空间大于此<6 space> 字符串的两倍,则逻辑将导致错误输出。即:将有<12 spaces>不断。
    为了解决这个问题,您可以在打印之前插入此代码。但只有在发生此类数据时才使用它。

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

    【讨论】:

    • 谢谢。我使用字符串 s.replaceAll(" ","");由 Marimaf 建造
    【解决方案3】:

    你试过了吗:

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

    您可能需要调整正则表达式。

    【讨论】:

      猜你喜欢
      • 2014-02-11
      • 2016-02-12
      • 1970-01-01
      • 2013-01-14
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多