我有一个输入流,其中包含由制表符 (\t) 分隔的字段 看起来像这样
String str = " acc123\tdpId123\t2011-01-01\t2022-01-01\thello@xyz.com\tIN\t1233\tSOMETHING ";
当我执行 str = str.trim();
和
strArray = str.split("\t", -1);
strArray=["acc123","dpId123","2011-01-01","2022-01-01","hello@xyz.com","IN","1233","SOMETHING"] will give size as 8
但输入记录中的最后一个字段不是必填项,可以跳过。
所以输入也可以像这样。
String str1 = "acc123\tdpId123\t2011-01-01\t2022-01-01\thello@xyz.com\tIN\t1233\t";
但在这种情况下,最后一个字段应该为空,但是当我在修剪和拆分后使用此字符串时,我的大小为 7
str1 = str1.trim();
strArray = str1.split("\t", -1);
strArray=["acc123","dpId123","2011-01-01","2022-01-01","hello@xyz.com","IN","1233"]will give size as 7
但是我想要
strArray=["acc123","dpId123","2011-01-01","2022-01-01","hello@xyz.com","IN","1233",""]
如何避免这种情况?
最佳答案
你去吧:
String str1 = " acc123\tdpId 123\t201 1-01-01\t2022-01-01\thello@xyz.com\tIN\t1233\t";
str1 = str1.replaceAll("^[ ]+", ""); // removing leading spaces
str1 = str1.replaceAll("[ ]+$", ""); // removing trailing spaces
String[] split = str1.split("\t", -1);
System.out.println(Arrays.toString(split));
System.out.println(split.length);
String#trim方法还会删除 \t
。为了处理这个问题,我使用正则表达式仅删除了前导和尾随空格。
输出:
[acc123, dpId 123, 201 1-01-01, 2022-01-01, hello@xyz.com, IN, 1233, ]
8
关于java - 不要在 JAVA 中从字符串的开头/结尾修剪制表符 (\t),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57724897/