亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

一只名叫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 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號