为了账号安全,请及时绑定邮箱和手机立即绑定

在字符串中搜索并获取相等的字符

在字符串中搜索并获取相等的字符

一只名叫tom的猫 2022-07-27 11:16:23
我需要在另一个逐个字符的字符串中搜索某个字符串,如果字符相同,则获取这样的字符;我正在这样做public String searchForSignature(String texto2) throws NoSuchAlgorithmException {        String myString = "", foundString = "";        myString = "aeiousrtmvb257";        for (int i = 0; i < texto2.length() || i <= 1000; i++) {            char c = texto2.charAt(i);            for (int j = 0; j < myString.length(); j++) {                if (c == myString.charAt(j)) {                    foundString = foundString + c;                }            }        }        return foundString;}我想提高性能,看到有表格和使用正则表达式,因为我还是有点外行,我无法以我的方式成功。 public String searchForSignature2(String texto2) {        Pattern pattern = Pattern.compile("aeiousrtmvb257");        Matcher matcher = pattern.matcher(texto2);        while (matcher.find()) {            System.out.println(matcher.group(1));        }        return matcher.group(1).toString();    }不返回任何东西//编辑真的,我想我对这个问题不是很清楚。实际上我需要让字符串中的所有字符等于“aeiousrtmvb257”我就是这么弄的,现在好像还可以,就是不知道性能好不好。 public String searchForSignature2(String texto2) {        String foundString = "";        Pattern pattern = Pattern.compile("[aeiousrtmvb257]");        Matcher matcher = pattern.matcher(texto2);        while (matcher.find()) {            System.out.println(matcher.group());            foundString+=matcher.group();        }        return foundString;    }}
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

据我了解您的问题,通过使用Pattern,Matcher这应该可以解决问题:


代码


private static final String PATTERN_TO_FIND = "[aeiousrtmvb257]";


public static void main(String[] args) {

    System.out.println(searchForSignature2("111aeiousrtmvb257111"));

}


public static String searchForSignature2(String texto2) {

    Pattern pattern = Pattern.compile(PATTERN_TO_FIND);

    Matcher matcher = pattern.matcher(texto2);


    StringBuilder result = new StringBuilder();


    while (matcher.find()) {

        result.append(matcher.group());

    }


    return result.toString();

}

输出


aeiousrtmvb257


查看完整回答
反对 回复 2022-07-27
?
呼如林

TA贡献1798条经验 获得超3个赞

我不明白,你为什么要打印你找到的字符串


public static String searchForSignature2(String texto2) {

    String maaString = "aeiousrtmvb257";

    String toSearch = ".*" + maaString +".*";

    boolean b = Pattern.matches(toSearch, texto2);


    return b ? maaString : "";

  }


public static void main(String[] args)

{

    String input = "4erdhrAW BLBAJJINJOI WETSEKMsef saemfosnens3bntu is5o3n029j29i30kwq23eki4"+

    "maoifmakakmkakmsmfajiwfuanyi  gaeniygaenigaenigeanige anigeanjeagjnageunega"+

    "movmmklmklzvxmkxzcvmoifsadoi asfugufngs"+

    "wpawfmaopfwamopfwampfwampofwampfawmfwamokfesomk"+

    "3rwq3rqrq3rqetgwtgwaeiousrtmvb2576266wdgdgdgdgd";

    String myString = searchForSignature2(input);

    System.out.println(myString);

}

你需要添加 .* 来告诉你的字符串被任何字符包围


查看完整回答
反对 回复 2022-07-27
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我不知道背后的原因是什么texto2.length() || i <= 1000,但是根据您方法中的逻辑,我可以建议以下解决方案:


public static void main(String... args) throws IOException {

    System.out.println(searchForSignature("hello"));

}


public static String searchForSignature(String texto2) {

    String myString = "aeiousrtmvb257";

    StringBuilder builder = new StringBuilder();

    for (char s : texto2.toCharArray()) {

        if (myString.indexOf(s) != -1) {

            builder.append(s);

        }

    }


    return builder.toString();

}

输出:eo


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信