在Java中查找具有连续字符的字符串

10 java regex

在Java中编写一个函数,它接受一个字符串数组,并从字符串数组中返回那些连续重复特定字母的字符串,例如:如果I/P是

{"Dauresselam", "slab", "fuss", "boolean", "clap"}
Run Code Online (Sandbox Code Playgroud)

那么应该是O/P.

{"Dauresselam", "fuss", "boolean"}
Run Code Online (Sandbox Code Playgroud)

我可以用它解决它

import java.util.Scanner;
public class doubleChars {
    public static String[] getDoubles(String[]In)
    {

        int inLen=In.length;
        String zoom[]=new String[inLen];
        int count=0;
        if(inLen==0)
        {
            return zoom;
        }
        for(int i=0;i<=inLen-1;i++)
        {
            String A=In[i];
            //System.out.println(A);
            int striLen=A.length();
            for(int j=0;j<striLen-1;j++)
            {

                if(A.substring(j, j+1).equals(A.substring(j+1, j+2)))
                {
                    zoom[count]=A;
                    count++;
                    break;
                }
            }

        }
          return zoom;
        }
     public static void main(String[] args)
     {
         char more='y';
         int ab=0;
        String[] res={};
        String[] fillMe={"durres", "murres", "", "abcdeee", "boolean", "nger", "lagger"};
        Scanner strobe=new Scanner(System.in);
        System.out.println("Please enter the arraye of the string");
        /*while(strobe.hasNext())
        {
            fillMe[ab]=strobe.next();

            ab++;
        }
        */
        res=doubleChars.getDoubles(fillMe);
        for(int k=0;k<res.length;k++)
        {
            if(res[k]==null)
            {
                break;
            }
        System.out.println(res[k]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

IS 没有使用正则表达式的方式,使之短?

sp0*_*00m 16

你可以使用反向引用:

([a-z])\1
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex可视化


Java示例:

String[] strings = { "Dauresselam", "slab", "fuss", "boolean", "clap" };

String regex = "([a-z])\\1";
Pattern pattern = Pattern.compile(regex);

for (String string : strings) {
    Matcher matcher = pattern.matcher(string);
    if (matcher.find()) {
        System.out.println(string);
    }
}
Run Code Online (Sandbox Code Playgroud)

打印:

Dauresselam
fuss
boolean
Run Code Online (Sandbox Code Playgroud)