在String Array中查找大写并将其解压缩

时间:2015-08-03 08:24:05

标签: java

我有一个像这样的数组输入,它是一个反向顺序的电子邮件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

我应该如何过滤字符串,因为没有模式?

4 个答案:

答案 0 :(得分:1)

为什么你认为没有模式?

你显然想要找到一个小写字母的字符串。

您可以使用正则表达式(^[^a-z]+)来匹配并提取。

Regex Demo

答案 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]);

Demo

答案 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());
    }
}