【问题标题】:Split String with semicolon token in JAVA在 JAVA 中使用分号标记拆分字符串
【发布时间】:2020-08-06 08:24:39
【问题描述】:

我在尝试用分号拆分字符串时遇到问题:

字符串是:

dsnSalarie;e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4; ;S21.G00.30.008;e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4;;;

螺栓分号是一个标记,不能被视为分隔符,因此我尝试更改字符串的分隔符,例如 "" :

dsnSalariee3f5c7c0-5f5e-4579-a262-3fd87aafe1e4 S21.G00.30.008e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4;

使用 StringUtils.split 或使用 StringTokenizer 我无法获得该分号,即使使用“StringUtils.splitPreserveAllTokens”

我发现的唯一解决方法是用分号包围空格,并在拆分时对其进行修剪:

dsnSalariee3f5c7c0-5f5e-4579-a262-3fd87aafe1e4 S21.G00.30.008e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4 ;

感谢您的想法。

【问题讨论】:

  • 我认为您必须将 java-tag 添加到您的问题中。另外,您可以在拆分它们的位置发布代码,以便我们查看示例吗?有各自的输出?

标签: java split stringtokenizer


【解决方案1】:

我不太确定我是否理解,但以下代码:

public class Test {
public static void main(String[] args) {
    String test="dsnSalarie<;>e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4<;> <;>S21.G00.30.008<;>e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4<;>;<;>";
    String[] split = test.split("<;>");
    for (String string : split) {
        System.out.println(string);
    }
}
}

产量

dsnSalarie
e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4
 
S21.G00.30.008
e3f5c7c0-5f5e-4579-a262-3fd87aafe1e4
;

分号器无法区分相同的字符,例如分号。如果有语义附加到 ;你需要一个合适的解析器,比如 ANTLR 来制定你的语言,它可以从令牌中推断出更高的顺序。

【讨论】:

  • 我使用 StringUtils.split() 不起作用,使用 String.split() 一切正常!谢谢 ! (我编辑了我的帖子以进行更正)
猜你喜欢
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2013-09-15
相关资源
最近更新 更多