我有一个像这样的数组输入,它是一个反向顺序的电子邮件ID以及一些数据:
MOC.OOHAY@ABC.PQRqwertySDdd
MOC.OOHAY@AB.JKLasDDbfn
MOC.OOHAY@XZ.JKGposDDbfn
我希望我的输出为
MOC.OOHAY@ABC.PQR
MOC.OOHAY@AB.JKL
MOC.OOHAY@XZ.JKG
我应该如何过滤字符串,因为没有模式?
答案 0 :(得分:1)
答案 1 :(得分:1)
[a-z]
上的split,限制为2:
String s1 = "MOC.OOHAY@ABC.PQRqwertySDdd";
String s2 = "MOC.OOHAY@AB.JKLasDDbfn";
String s3 = "MOC.OOHAY@XZ.JKGposDDbfn";
System.out.println(s1.split("[a-z]", 2)[0]);
System.out.println(s2.split("[a-z]", 2)[0]);
System.out.println(s3.split("[a-z]", 2)[0]);
答案 2 :(得分:1)
有一个模式,即任何大写字符,后跟另一个大写字母,句点或@
字符。
翻译过来,这会是这样的:
String[] input = new String[]{"MOC.OOHAY@ABC.PQRqwertySDdd","MOC.OOHAY@AB.JKLasDDbfn" , "MOC.OOHAY@XZ.JKGposDDbfn"};
Pattern p = Pattern.compile("([A-Z.]+@[A-Z.]+)");
for(String string : input)
{
Matcher matcher = p.matcher(string);
if(matcher.find())
System.out.println(matcher.group(1));
}
收率:
MOC.OOHAY@ABC.PQR
MOC.OOHAY@AB.JKL
MOC.OOHAY@XZ.JKG
答案 3 :(得分:0)
你可以这样做:
String arr[] = { "MOC.OOHAY@ABC.PQRqwertySDdd", "MOC.OOHAY@AB.JKLasDDbfn", "MOC.OOHAY@XZ.JKGposDDbfn" };
for (String test : arr) {
Pattern p = Pattern.compile("[A-Z]*\\.[A-Z]*@[A-Z]*\\.[A-Z.]*");
Matcher m = p.matcher(test);
if (m.find()) {
System.out.println(m.group());
}
}