Java:字符串拆分

时间:2010-11-18 02:41:55

标签: java string split

我有以下字符串:

     Mr John Smith Dickson <john@yahoo.com>

我想将它分成三部分:

第1部分 - 先生 第二部分 - 约翰史密斯迪克森
第三部分 - john@yahoo.com

我对如何实现这一点很困惑,有人可以帮忙吗?

以上名称只是样本,名称可能会有所不同,例如。 John,John Smith,John Smith Dickson

7 个答案:

答案 0 :(得分:3)

你应该使用正则表达式。您可以捕获第一个单词直到空白,然后接下来的三个单词用空格分隔,然后是尖括号中的东西。

这是有效的

(\w+)\s+(\w+\s+\w+\s+\w+)\s*<(.*)>

\ w表示任何单词字符。 +表示1或更多。 \ s表示任何空白字符。 ()中的事物被捕获。您将在java代码中使用的正则表达式是

(\\w+)\\s+(\\w+\\s+\\w+\\s+\\w+)\\s*<(.*)>

在这里测试

 http://www.regexplanet.com/simple/index.html

请注意,您可以使用拆分执行此操作,但无论何时拆分,然后获取令牌,然后拆分令牌,然后获取更多令牌,然后再次拆分,您执行的操作过于复杂。正则表达式大大简化了事情。

答案 1 :(得分:1)

您需要使用 yourstring .split(“”);这会将字符串拆分为每个单词(基于空格)。如果您知道每个人都有三个名字,那么您可以说出以下内容:

String myString = "Mr John Smith Dickson john@yahoo.com";    
String[] splitResult = myString.split(" ");
String title = splitResult[0]; \\ Mr
String name = splitResult[1]+" "+splitResult[2]+" "+splitResult[3]; \\ John Smith Dickson
String email = splitResult[4];

如果你不知道一个人有多少名字,那就变得有点复杂了。

答案 2 :(得分:1)

String mister = "Mr John Smith Dickson - john@yahoo.com";
String[] misters = mister.split(" ");

第一部分:

String first = misters[0];

第二:

String second = misters[1] + " " + misters[2] + " " + misters[3];

第三:

String third = misters[5];

答案 3 :(得分:1)

String s = "Mr John Smith Dickson<john@yahoo.com>";
Pattern pattern = Pattern.compile("(\\w+)\\b(.+)<(.+)>");
Matcher matcher = pattern.matcher(s);

if (matcher.matches()) {
 String title = matcher.group(1);
 String name = matcher.group(2);
 String email = matcher.group(3);
}

答案 4 :(得分:0)

Java有一个String.split(String regex)方法,您可以这样使用:

String s =“Mr John Smith Dickson”; String [] parts = s.split(“”);

这将为您提供一个由空格分隔的部分的字符串数组。然后你可以做点什么

Sting title = part [0]; String name = part [1] +“”+ part [2] +“”+ part [3];

答案 5 :(得分:0)

使用一些正则表达式。

先生:

"([A-Za-z]{2,3}) "

John Smith Dickson

"[A-zA-z] (.*)<"

电子邮件

".*<(.*)>"

答案 6 :(得分:0)

如果你在字符串的开头总是有像Mr,Mrs,Dr这样的缩写词,你可以使用正则表达式:

^([A-Z][a-z]{1,2})\s+([^<]*)<(.*?)>$

Regex in action.