java - 不要在 JAVA 中从字符串的开头/结尾修剪制表符 (\t)

标签 java string trim

我有一个输入流,其中包含由制表符 (\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/

相关文章:

java - Microsoft Access 颜色代码转换逻辑至 RGB 或 HEX 或 DEC 值

java - Eclipse 插件教程

java - 理解 Hibernate 中的 @MapsId 注解

c - 用c记录文本文件中的每个单词

c - scanf 拾取空格后的字符 C

string - 如何从 Golang 中的字符串中修剪 "["字符

java - 安卓许可证 "LICENSED RESPONSE"错误

java - 解析包含双引号的字符串

c# - 使用 C# 和 OpenXML 在 xlsx 文件中写入时,Excel 单元格文本被修剪

c++ - 如何使用特定的 unicode 代码点 rtrim wchar_t?