繁体   English   中英

在Java中使用StringTokenizer拆分字符串

[英]splitting the String using StringTokenizer in Java

我最近开始学习Java。 我被困在拆分特定的字符串。 这是字符串:

String head = "(*, grandparent(X,Y))";

我想对字符串进行分割,使其给出两个标记。 这两个标记应为*和grandparent(X,Y) 我试图将其拆分

StringTokenizer st=new StringTokenizer(head,",");
System.out.println("The tokens are: " + st.countTokens());

但是如果我用逗号将其分割,则会得到三个令牌。

我不想将它用正则表达式分开。 你们能帮我吗?

如果您始终有2个令牌,则可以指定String.split生成的令牌数量限制

例如: String[] tokens = head.split(",", 2)

请不要在新代码中使用StringTokenizer,不鼓励使用它一段时间,而希望使用更新更好的方法来执行类似的工作。

您可以使用indexOf(',')找到第一个逗号。

例:

String head="(*, grandparent(X,Y))";

int idx = head.indexOf(',');

String sub1 = head.substring(1, idx);
String sub2 = head.substring(idx + 1, head.length() - 1);

System.out.println("sub1 = " + sub1);
System.out.println("sub2 = " + sub2);

您可以按以下方式使用番石榴中分离器

String head="(*, grandparent(X,Y))";

Iterable<String> tokens = Splitter.on(",").limit(2).split(head);

for(String token : tokens){
    System.out.println(token);
}

在要添加到pom.xml的maven依赖项下面

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>19.0</version>
</dependency>

嗨,我建议尝试这段代码。 这是一种可行的技巧,具体取决于头字符串的内容。 对于head的共享价值,它将起作用。

head=head.replace("*,","*;");
StringTokenizer st=new StringTokenizer(head,";");

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM