【发布时间】:2022-07-07 23:09:09
【问题描述】:
我从一些数据库查询中收到了一个字符串(假设 str)。 str = "+Aa+Bk+Bo+Ac+Lc"; 但是如果将相同的字符串复制到intelliJ,它会在str中显示不可见的字符
我必须将此字符串(即str)拆分为String[],然后拆分为List。 并在 splatted Array 和转换后的 List 中获取 this[ZWSP]。 还尝试了一些/以下技术来修剪和删除它,但没有奏效。
String str = "+Aa+Bk+Bo+Ac+Lc";
String[] strArr = str.split("\\+");
List<String> splitStrList = Arrays.stream(str.split("\\+"))
.map(String::trim)
.collect(Collectors.toList());
---方法2
String[] array2 = Arrays.stream(strArr).map(String::trim).toArray(String[]::new);
String[] trimmedArray = new String[array2.length];
for (int i = 0; i < array2.length; i++) {
trimmedArray[i] = array2[i].trim();
}
List<String> trimmedArrayList = Arrays.asList(trimmedArray);
还有一些其他方法,但是在将输出复制到 intelliJ IDE 时看到那些 [ZWSP] 特殊字符。 这会在进一步处理中产生问题。
如何删除这些 spcl 字符,即 [ZWSP] 以获取类似列表/数组 [, Aa, Bk, Bo, Ac, Lc]
将感谢所有针对此问题的建议/解决方案。
【问题讨论】:
-
它被称为zero-width space,正则表达式的空白捕获将抓住它们:
String[] strArr = str.split("\\s+")(注意您的正则表达式中缺少的s)。 -
@Rogue ("\\s+") 也不起作用,它删除了可用的字符以及创建长度为 1 的列表。