如何删除两个字符(+
和@
)之间的子字符串。
实施例 -
bunny+12kl@funny.com
应该bunny@funny.com
我应该使用哪个正则表达式。
答案 0 :(得分:4)
String s = "bunny+12kl@funny.com";
String email = s.replaceAll("\\+.*@", "@");
答案 1 :(得分:2)
试试这个。
str = str.replaceAll("\\+[^@]*@", "@");
class Test {
public static void main(String[] args) {
String str = "bunny+12kddddd+++ddd/d/d/d/d\\####ddl@funny.com";
str = str.replaceAll("\\+[^@]*@", "@");
System.out.println(str);
}
}
答案 2 :(得分:1)
使用正则表达式是:
String repl = str.replaceAll("(.*?)[+].*?(@.*)", "$1$2");
虽然你可以完全避免正则表达式并使用String#indexOf
方法找到2个位置并使用它来获得子串。
答案 3 :(得分:1)
s = s.replace(s.substring(s.indexOf("+"), s.indexOf("@")), "");
答案 4 :(得分:1)
无需使用正则表达式。你只需使用for循环即可:
for(;;) {
int start = str.indexOf('+');
if(start == -1) break;
int stop = str.indexOf('@');
if(stop == -1) break;
str = str.substring(0,start+1) + str.substring(stop);
}
这更详细,但可能会更好地解释其他人以后维护代码的意思。不是每个人都很舒服解码正则表达式。
答案 5 :(得分:0)
以下是使用RegEx分组的解决方案。
String str = "bunny+12kl@funny.com";
final Pattern pattern = Pattern.compile("(.+?)\\+.*@(.+?)$");
final Matcher matcher = pattern.matcher(str);
matcher.find();
System.out.println(matcher.group(1) +matcher.group(2));
干杯
答案 6 :(得分:0)
只需编写一个实用程序类来切割字符串:
public class MyStringUtils {
public static void main (String[] args) {
String str = "bunny+12kl@funny.com";
int startIndex = str.indexOf('+');
int endIndex = str.indexOf('@');
System.out.println("Outer: " + sliceRangeOuter(str, startIndex, endIndex));
System.out.println("Inner: " + sliceRangeInner(str, startIndex, endIndex));
}
public static String sliceStart(String str, int startIndex) {
if (startIndex < 0)
startIndex = str.length() + startIndex;
return str.substring(startIndex);
}
public static String sliceEnd(String str, int endIndex) {
if (endIndex < 0)
endIndex = str.length() + endIndex;
return str.substring(0, endIndex);
}
public static String sliceRangeInner(String str, int startIndex, int endIndex) {
if (startIndex < 0)
startIndex = str.length() + startIndex;
if (endIndex < 0)
endIndex = str.length() + endIndex;
return str.substring(startIndex, endIndex);
}
public static String sliceRangeOuter(String str, int startIndex, int endIndex) {
if (startIndex < 0)
startIndex = str.length() + startIndex;
if (endIndex < 0)
endIndex = str.length() + endIndex;
return sliceEnd(str, startIndex) + sliceStart(str, endIndex);
}
}
输出:
Outer: bunny@funny.com
Inner: +12kl
答案 7 :(得分:-1)
public static string RemoveSpecialCharacters(string input) {
Regex r = new Regex("(?:[^a-z0-9 ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}