繁体   English   中英

Java:字符串拆分

[英]Java: String splitting

我有以下字符串:

     Mr John Smith Dickson <john@yahoo.com>

我想将其分为三个部分:

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

我对如何实现这一目标感到困惑,有人可以帮忙吗?

以上名称仅为示例,名称可能有所不同,例如。 约翰,约翰·史密斯,约翰·史密斯·迪克森

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

这有效

(\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

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

您将要使用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];

如果您不知道一个人有多少个名字,它将变得更加复杂。

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];
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);
}

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

String s =“约翰·史密斯·迪克森先生”; String []个部分= s.split(“”);

这将为您提供由空格分隔的部分的字符串数组。 那么你可以做点赞

字符串标题= part [0]; 字符串名称= part [1] +“” + part [2] +“” + part [3];

使用一些正则表达式。

先生:

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

约翰·史密斯·迪克森

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

电子邮件

".*<(.*)>"

如果您始终在字符串开头使用Mr,Mrs,Dr之类的缩写,则可以使用正则表达式:

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

正则表达式在行动。

暂无
暂无

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

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