如何从某些位置的字符串中删除某些字符?

时间:2013-08-01 10:41:32

标签: java string

我正在尝试取一个字符串并将所有字符从char中删除到另一个

示例字符串:

 String personAndPhone = " Dave (206515608)"

我想将此字符串转换为两个字符串,即人名和电话号码(不带“()”)。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

试试这个

String a[] = personAndPhone.trim().replaceAll("[()]", "").split(" ");

a[0] -> Dave
a[1] -> 206515608

答案 1 :(得分:3)

使用正则表达式:

String name = str.replaceAll("\\s*(.*)\\s*\\(.*", "$1");
String phone = str.replaceAll(".*?\\((.*)\\).*","$1");

这两行都用组1替换整个输入,组1捕获目标。

“名称”是指向括号的所有内容,不包括两端的空格,因此它会捕获“John Smith 3rd”没问题。

“手机”是第一个和最后一个括号之间的所有内容,因此它将从“Dave((01)5678 9876)”中捕获“(01)5678 9876”。

答案 2 :(得分:2)

我注意到你周围有空格,所以我要做的第一件事就是修剪。

personAndPhone = personAndPhone.trim();

接下来,你在中间有一个空间,这可能是一个很好的分裂点。

String[] tokens = personAndPhone.split(" ");

String name = tokens[0];
// now contains: Dave

接下来,您可以从数字中删除括号:

String number = tokens[1].replaceAll("[()]", "");

// now contains: 206515608

或者@EvgeniyDorofeev更简洁地说:

String[] tokens = personAndPhone.trim().replaceAll("[()]", "").split(" ");
String name = tokens[0];
String number = tokens[1];

答案 3 :(得分:2)

我倾向于使用正则表达式来做这样的事情: -

String personAndPhone = " Dave (206515608)"
Pattern pattern = Pattern.compile("([A-Za-z]+)\s\(([0-9]+)\)");
Matcher matcher = pattern.matcher(personAndPhone);

String name = matcher.group(1)
String number = matcher.group(2)

显然,您可以根据需要使正则表达式更复杂一些。这将允许您解析更严格的问题。您还可以使用正则表达式对精度和长度检查进行更多控制。

请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html