Java:字符串拆分
我有以下字符串:
Mr John Smith Dickson
我想把它分成三部分:
第一部分 – 先生
第二部分 – 约翰史密斯迪克森
第3部分 – 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"; 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 =“John Smith Dickson先生”; String [] parts = s.split(“”);
这将为您提供一个由空格分隔的部分的字符串数组。 然后你可以做点什么
Sting title = part [0]; String name = part [1] +“”+ part [2] +“”+ part [3];
使用一些正则表达式。
先生:
"([A-Za-z]{2,3}) "
约翰史密斯迪克森
"[A-zA-z] (.*)<"
电子邮件
".*<(.*)>"
如果你总是在字符串的开头有缩写,如先生,太太,博士,你可以使用正则表达式:
^([AZ][az]{1,2})\s+([^<]*)<(.*?)>$
正则表达式在行动。