【问题标题】:String split by spaces字符串由空格分割
【发布时间】:2015-11-15 05:55:53
【问题描述】:

我知道这个问题已被问过很多次,但我不知道为什么我的问题不起作用。 我有一个这样的字符串:

String line = "_9________+_10__" // ("_" is a white space)

我做到了

String[] token = line.split("\\s+");

当我打印token中的元素时,输出是这样的:

_ //(spaces here)
9
+
10

我不明白为什么那里还有空格...有人可以帮我解决这个问题吗?

【问题讨论】:

  • 为我工作。 System.out.println(Arrays.toString("9 + 10 ".split("\\s+"))); 打印 [9, +, 10]。没有找到多余的空格。
  • @Andreas 你在“9”和“10”之间有很多空格吗?
  • 即使它没有拆分空格,也没有任何理由在索引 0 处仅出现 1 次。也许您的代码中有其他内容?
  • 我的 RegEx 模块是否有问题?
  • @HanmingZeng 我愿意。所以把它们折叠起来了。

标签: java regex string split space


【解决方案1】:

你可以做的是trim()然后split()它。

Srting line = " 9    + 10 ".trim();

String[] tokens = line.split("\\s+");

【讨论】:

    【解决方案2】:

    @Andreas 感谢您的帮助。现在这个问题已经解决了。

    我将在这里引用 Andreas 的评论: 您新更新的问题在开头有一个空格。 split() 默认情况下会消除任何尾随空值,但不会消除嵌入或前导空值。而且您的问题是错误的:令牌数组中的第一个值是空的,而不是空格列表。这是设计和记录的。您应该阅读 javadoc:docs.oracle.com/javase/7/docs/api/java/lang/...。它说“因此结果数组中不包含尾随的空字符串。”

    解决这个问题的两种方法:在调用 split() 之前修剪字符串,或者忽略数组中的空值。

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 2012-09-22
      • 2014-12-13
      • 2013-08-02
      • 2023-04-02
      • 1970-01-01
      • 2015-09-03
      • 2012-04-22
      • 2011-12-15
      相关资源
      最近更新 更多