"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > How Can I Efficiently Replace Multiple Substrings in a Java String?

How Can I Efficiently Replace Multiple Substrings in a Java String?

2025-03-24에 게시되었습니다
검색:343

How Can I Efficiently Replace Multiple Substrings in a Java String?

Replacing Multiple Substrings in a String Efficiently in Java

When confronted with the need to replace multiple substrings within a string, it is tempting to resort to the brute force approach of repeatedly applying the string.replace() method. However, this can be inefficient for large strings or when working with numerous strings.

Exploiting Regular Expressions

A more efficient solution involves leveraging regular expressions. Regular expressions allow you to define complex search patterns and perform text transformations in a single operation.

Example Usage

Consider a scenario where you want to replace tokens such as "%cat%" and "%beverage%" with values stored in a map. Using StringUtils from Apache Commons Lang, you can create a pattern and matcher as follows:

Map<String,String> tokens = new HashMap<>();
tokens.put("cat", "Garfield");
tokens.put("beverage", "coffee");

String template = "%cat% really needs some %beverage%.";

// Create pattern of the format "%(cat|beverage)%"
String patternString = "%(" + StringUtils.join(tokens.keySet(), "|") + ")%";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(template);

Next, you can use the matcher to find all occurrences of the tokens and replace them with the corresponding values:

StringBuffer sb = new StringBuffer();
while(matcher.find()) {
    matcher.appendReplacement(sb, tokens.get(matcher.group(1)));
}
matcher.appendTail(sb);

System.out.println(sb.toString());

Benefits of Regular Expressions

Once the regular expression is compiled, searching the input string is typically very fast. Additionally, regular expressions provide the flexibility to handle complex search patterns, such as those involving parentheses and quantifiers.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3