亲爱的, 我有2个输入字符串1)堆栈,结束,流2)栈/结束,流,com 我想从上面的2个输入中只打印字符串(没有特殊字符) 对于第一个输入我使用下面的功能但是对于第二个输入我不知道如何处理它。请给我解决方案。
st = new StringTokenizer("stack,over,flow", ",");
while (st.hasMoreTokens())
{
String token = st.nextToken();
System.out.println("token = " + token);
}
输出:
stack
over
flow
答案 0 :(得分:0)
您需要更好地格式化问题,这很难理解。但如果我读得正确,
st = new StringTokenizer("stack,over,flow", ",/");
应该工作得很好。
答案 1 :(得分:0)
您能定义特殊字符的含义吗?你的意思是“只有字母数字字符”吗?
如果要删除所有可能的特殊字符并仅保留字母数字字符,则可以使用以下内容:
s = s.replaceAll("[^a-zA-Z0-9]", "");
如果您想逐个打印:
s = s.replaceAll("[^a-zA-Z0-9]", "/");
String[] splitString = s.split("/");
for(String str:splitString)
{
System.out.println(str);
}
<强> EIDT:强> 因为您问:上面的代码使用java 5引入的enhanced for loop(也称为for-each循环)。 使用'normal'for循环,这是:
s = s.replaceAll("[^a-zA-Z0-9]", "/");
String[] splitString = s.split("/");
for(int i=0; i<splitString.length(); i++)
{
String str = splitString[i];
System.out.println(str);
}
此外:
StringTokenizer
是遗留类 为保持兼容性而保留 原因虽然它的用途是 在新的代码中气馁。它是 建议任何人都这样做 功能使用split
方法String
或java.util.regex
包而不是。
(来自javadoc)
答案 2 :(得分:0)
在这两种情况下,这应该对你有用:
String[] strArr=yourString.split("[/,]");
for(String str:strArr)
{
System.out.println(str);
}