Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在字符串中查找指定的表达式_Java_Android_Regex_Algorithm - Fatal编程技术网

Java 在字符串中查找指定的表达式

Java 在字符串中查找指定的表达式,java,android,regex,algorithm,Java,Android,Regex,Algorithm,我正在寻找一种在字符串中查找三个子字符串的解决方案 我的字符串看起来像: 约翰·史密斯电话:555222333。john@gmail.com 我想从这个字符串中获取电话号码、电子邮件和姓名。找到电子邮件和电话号码很简单,但我不知道如何获得姓名 编辑。 此字符串中的单词顺序并不总是相同的。电话前的单词可以视为姓氏,而电话前的所有单词都可以视为姓名。 比如: String names = myString.substring(0, myString.indexOf("tel.")); String

我正在寻找一种在字符串中查找三个子字符串的解决方案

我的字符串看起来像:

约翰·史密斯电话:555222333。john@gmail.com

我想从这个字符串中获取电话号码、电子邮件和姓名。找到电子邮件和电话号码很简单,但我不知道如何获得姓名

编辑。
此字符串中的单词顺序并不总是相同的。

电话前的单词可以视为姓氏,而电话前的所有单词都可以视为姓名。 比如:

String names = myString.substring(0, myString.indexOf("tel."));
String name = names.subString(0, names.indexOf(" "));
String surname = names.subString(names.indexOf(" "), names.size()-1);

输入字符串可以拆分为电话和邮件。例如:

String("John Smith tel. 555222333 mail. john@gmail.com").split("mail\\.\\B");   
此处,\B确保不会在mail.com上拆分字符串。然后尝试在下面的正则表达式中获取名称:

[[[A-Za-z]+][\\s+]]+
这将搜索是否存在至少一个或多个(+)名称部分。 这里,名称部分(即首名、姓氏或中间名)可以以大写或小写字符开头并包含大写或小写字符。希望这对你有帮助

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"

我忘了说单词的顺序并不总是一样的。