当前位置: 首页 > 知识库问答 >
问题:

使用Regex删除字符串开头的空格将得到null Java

舒赞
2023-03-14
as431431af,87546,3214| 5a341fafaf,3365,54465      | 6adrT43   ,  5678  ,            5655
String no_whitespace = readFile3.replaceAll("\\s+", "");
Pattern p = Pattern.compile("[a-zA-Z0-9]*,\\d*,\\d*", Pattern.MULTILINE);
Matcher m = p.matcher(ue_No_whitespace);
int lastMatchPos = 0;
while (m.find()) {
    System.out.println(m.group());
    lastMatchPos = m.end();
}
if (lastMatchPos != ue_No_whitespace.length())
   System.out.println("Invalid string!");
nullas431431af,87546,3214
5a341fafaf,3365,54465
6adrT43,5678,5655

我做错了什么?即使我物理地从txt文件的开头移除空格,也会出现相同的结果。有没有更简单的方法可以使用regex在字符串中获取组,并将每个字符串部分,在“,”之前,添加到其变量中?

共有1个答案

满言
2023-03-14

您可以使用包含可选空格的拆分,然后使用包含可选空格的拆分获得的项:

String str = "as431431af,87546,3214| 5a341fafaf,3365,54465      | 6adrT43   ,  5678  ,            5655";
String[] items = str.split("\\s*\\|\\s*");
List<String[]> res = new ArrayList<>();
for(String i : items) {
    String[] parts = i.split("\\s*,\\s*");
    res.add(parts);
    System.out.println(parts[0] + " - " + parts[1] + " - " + parts[2]);
}

请参阅Java演示打印

as431431af - 87546 - 3214
5a341fafaf - 3365 - 54465
6adrT43 - 5678 - 5655

结果在res列表中。

    null
 类似资料:
  • 问题内容: 如何在Java中从字符串开头删除空格而不从结尾删除空格? 如果值为: 然后,如何只删除前导空格,如下所示: 我当前的实现是遍历,检查第一个字符并创建一个子字符串,直到达到第一个非空白值。 谢谢! 问题答案: 您可以使用:

  • 问题内容: 我有一个看起来像这样的字符串: 我如何删除第一个; 但只有在字符串的开头找到它? 使用,将删除 所有 。 问题答案: 普通格式,不带正则表达式: 花费: 0.0369毫秒 (0.000,036,954秒) 与: 注意到: 0.1749毫秒 (0.000,174,999秒)第一次运行(编译),和 0.0510毫秒 (0.000,051,021秒)之后。 显然,已在我的服务器上进行了分析。

  • 问题内容: 如何在Python 2.6中删除XML字符串中的空格和换行符?我尝试了以下软件包: etree:此代码段保留原始空格: 我不能使用将提供参数的Python 2.7 。 渺小:一样: 问题答案: 最简单的解决方案可能是使用lxml,您可以在其中设置解析器选项以忽略元素之间的空白: 这可能足以满足您的需求,但是有些警告是安全的: 这只会删除元素之间的空格节点,并尽量不要删除内容混合的元素内

  • 被删除,因此也是另一个匹配字符串的一部分,不确定这是由于错误的regEx还是反字符类的错误应用。

  • 问题内容: 在Go中从某个任意字符串中剥离所有空格的最快方法是什么。 我从字符串包中链接了两个函数: 有人有更好的方法吗? 问题答案: 以下是一些用于从字符串中剥离所有空格字符的不同方法的基准:(源数据): :用途; 随着遇到更多的非空白字符,逐渐增加分配的空间量 :和; 产生大量中间数据 用途; 执行一次分配,但是如果源字符串主要是空格,则可能会总体上分配。 package main_test

  • 问题内容: 如何删除字符串中的空格?例如: 输入: 输出: 问题答案: 这个? 例 更新: 基于此问题此: 是更好的解决方案。它产生相同的结果,但执行速度更快。 正则表达式 是“空白”的正则表达式,并且是“全局”标志,表示匹配ALL (空白)。 在这里可以找到一个很好的解释。 附带说明,您可以将单引号之间的内容替换为所需的任何内容,因此可以将空白替换为任何其他字符串。