我在基于某些分隔符进行标记或拆分字符串时遇到问题。我需要标记两种类型的字符串。以下是模式:
a/b/c/d
和
a/b//d
我很困惑如何通过一个函数解析它们。因为在解析哪个字符串即将被解析之前我无法判断。由于数据是动态的。如果没有,我会在搜索下一个令牌时获得NoSuchElmenet Exception
。任何帮助表示赞赏。
答案 0 :(得分:2)
我想你想获得令牌{a, b, c, d}
或{a, b, d}
,因此,使用StringTokenizer类非常容易。
看看这个例子:
String exampleA = "a/b/c/d";
StringTokenizer tokens=new StringTokenizer(exampleA , "/");
while(tokens.hasMoreTokens()){
System.out.println(tokens.nextToken());
}
你会得到:
{a, b, c, d}
而且,对于第二个例子:
String exampleB = "a/b//d";
StringTokenizer tokens=new StringTokenizer(exampleB, "/");
while(tokens.hasMoreTokens()){
System.out.println(tokens.nextToken());
}
你会得到:
{a, b, d}
我希望这对你有用。
干杯!
答案 1 :(得分:1)
如果您只想分离这两个模式或确定哪个模式,请尝试使用java Pattern类。下面,快速解决方案
String testString = "a/b/c//d";
String checkfor = ".*//.*";
boolean matches = Pattern.matches(checkfor, testString);
Pattern.matches()将搜索两个“/”的出现,然后相互返回并分别返回(例如“//”而不是“/ ... /”)。
祝你好运