我在原始文件中记录了数据。它看起来像这样:
"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)
这将完成您的工作。如果你有很多像上面那样的数据,我们将不得不考虑其他一些逻辑。我认为它不适合数百万条记录。
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");
答案 1 :(得分:1)
您可以添加反斜杠n“\ n”以在字符串中添加换行符。
我不确定这是不是最好的方法,但这是一种方法: 如果你知道你需要换行符,你可以子串并添加反斜杠n。像这样:
String s = as.substring(0,4) + "\n" + as.substring(4,18) + "\n" + //....and so on
希望有所帮助
答案 2 :(得分:-1)
你试过了吗?
String[] split = s.split("\\s+");
您可能需要调整reg-exp。