java中的字符串截断

时间:2014-02-14 23:53:52

标签: java string substring

我有一个像

这样的字符串
String email = "mailto://abc@gmail.com"; 

我想只获取电子邮件地址,但不使用固定号码,例如

email.substring(9); 

任何更好的方法。

3 个答案:

答案 0 :(得分:3)

字符串是URI格式,所以你可以做

String email = "mailto://abc@gmail.com";
URI uri = URI.create(email);
String address = uri.getUserInfo() + "@" + uri.getHost();

答案 1 :(得分:3)

使用正则表达式:

String email = "mailto://abc@gmail.com"; 
// Builds a pattern with a capturing group ()
Pattern mailtoPattern = Pattern.compile("mailto://(.*)");

// Give your string to a matcher generated by the compiled pattern
Matcher mailMatcher = mailtoPattern.matcher(email);

// If your String is correctly formatted you can attempt to capture 
// the content between parenthesis
if (mailMatcher.find()) {
    String mailValue = emailMatcher.group(1);
} 

使用正则表达式也可以帮助您验证作为输入提供的字符串,您甚至可以验证邮件字符串是否确实是一个邮件地址(有疯狂的人有各种疯狂的表达式来验证它们)。我建议你在这里阅读非常全面的JavaDoc:http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

答案 2 :(得分:0)

不使用正则表达式

String string = "mailto://abc@gmail.com";
final String PREFIX = "mailto://";
String email = string.substring(PREFIX.length());