代码之家  ›  专栏  ›  技术社区  ›  rmaitipe

将正则表达式匹配repaceAll()转换为声纳规则的replace()[重复]

  •  -1
  • rmaitipe  · 技术社区  · 2 年前

    我有一个Java字符串,它通过 input.replaceAll("(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3") 其通过如标题中所述的声纳规则进行标记。仅仅替换替换是不起作用的,所以我在这里寻找解决方案。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Kamil Pajak    2 年前

    你可以使用预编译的 图案 匹配器 ,或通过不带regex的子字符串。

    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    
    public class Main {
        public static void main(String[] args) {
            String input = "123456789";
    
            // Approach 1: Using precompiled Pattern and Matcher
            Pattern pattern = Pattern.compile("(\\d{3})(\\d{2})(\\d{4})");
            Matcher matcher = pattern.matcher(input);
            String ssnFormattedPattern = matcher.replaceAll("$1-$2-$3");
            System.out.println("Using Pattern and Matcher: " + ssnFormattedPattern);
    
            // Approach 2: Using substring without regex
            String ssnFormattedSubstring = input.substring(0, 3) + "-" + input.substring(3, 5) + "-" + input.substring(5);
            System.out.println("Using substring: " + ssnFormattedSubstring);
        }
    }