我正在寻找在一个字符串中找到三个子字符串的解决方案。
我的字符串看起来像:
约翰史密斯电话。555222333 邮件。john@gmail.com
我想从这个字符串中获取电话号码、电子邮件和姓名。查找电子邮件和电话号码是微不足道的,但我不知道如何获取姓名和姓氏。
编辑。此字符串中的单词顺序并不总是相同的。
1. Retrieve telephone number. Remove it and string 'tel.' from the original string.
2. Retrieve email. Remove it and string 'mail.' from the original string.
3. Trim the remaining and you get the name.
这就是解决方案。但是为了样式的一致性,最好放一个字符串'name'。在名字之前。像这样
"name. John Smith tel. 555222333 mail. john@gmail.com"
输入字符串可以围绕电话进行拆分。和邮件。例如:
String("John Smith tel. 555222333 mail. john@gmail.com").split("mail\\.\\B");
在这里,\B 确保不会在 mail.com 处拆分字符串。然后尝试下面的正则表达式来获取名称:
[[[A-Za-z]+][\\s+]]+
这将搜索至少一个或多个 (+) 名称部分的存在。这里,名称部分(即名字、姓氏或中间名)可以以大写或小写字符开头并包含。希望这对你有帮助。
电话前的词。可以视为姓氏,之前的一切都可以视为名字。就像是:
String names = myString.substring(0, myString.indexOf("tel."));
String name = names.subString(0, names.indexOf(" "));
String surname = names.subString(names.indexOf(" "), names.size()-1);