把这些例子如何获取字符串中的第二个单词?
Smith John
Smith-Crane John
Smith-Crane John-Henry
Smith-Crane John Henry
我想的空间后拿到John
的第一个字,但它可能不是直到最后,也可以是直到非字母字符。 Java 1.5会如何呢?
把这些例子如何获取字符串中的第二个单词?
Smith John
Smith-Crane John
Smith-Crane John-Henry
Smith-Crane John Henry
我想的空间后拿到John
的第一个字,但它可能不是直到最后,也可以是直到非字母字符。 Java 1.5会如何呢?
您可以使用正则表达式和Matcher
类:
String s = "Smith-Crane John-Henry";
Pattern pattern = Pattern.compile("\\s([A-Za-z]+)");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
结果:
John
你可以使用String.split:
line.split(" ");
这对于第一行会产生:
{ "Smith", "John" }
然后,您可以迭代这个数组找到它。如有必要,您还可以使用正则表达式作为分隔符。
这是否足够好,还是你需要更强大的东西?
个人而言,我真的很喜欢这个字符串标记。我知道这是过时了,这些天,分这么简单,所有的,但是......
(因为家庭作业的高概率的伪码)
create new string tokenizer using (" -") as separators
iterate for each token--tell it to return separators as tokens
if token is " "
return next token;
完成。
也许把它放在blockquote而不是代码示例中,以避免语法突出显示 – Patrick 2010-06-02 21:11:07
StringTokenizer是如此2006. :-)根据Javadoc的说法,StringTokenizer是一个遗留类,由于兼容性原因而保留,尽管它在新代码中的使用不受欢迎。建议任何寻求此功能的人都使用String或java.util.regex包的拆分方法。' – corsiKa 2010-06-02 21:14:43
@glowcoder我无法弄清楚如何分割来做tokenizer自然做的事情 - 将分隔符作为记号返回。 – 2010-06-03 20:08:54
在你的第三个例子中是正确的输出“John”或“John-Henry”? – jasonmp85 2010-06-02 20:53:21
约翰............ – Pentium10 2010-06-02 20:54:30
WTF是“可能的” - 家庭标签? – 2010-06-02 21:00:15