【问题标题】:java.util.regex.PatternSyntaxException: null (in java.util.regex.Pattern) errorjava.util.regex.PatternSyntaxException: null (in java.util.regex.Pattern) 错误
【发布时间】:2011-02-07 01:06:41
【问题描述】:
public void convertStrings() {
    for (int counter = 0; counter < compare.length; counter++) {
            compare[counter] = compare[counter].replace('*','_'); 
            compare[counter] = compare[counter].replaceAll("_",".*"); 
            compare[counter] = compare[counter].replace('?', '.'); 
    }
    // System.out.printf("%s", Arrays.toString(compare));
} 
public void compareStrings() {
    for (int counter = 0; counter < data.length; counter++) {
        for (int counter1 = 0; counter1 < compare.length; counter1++) {

            if (data[counter].matches(compare[counter1]) == true) {
                System.out.printf("%s ", data[counter]); 
            }

        }
        System.out.println(); 
    }
}

}

我要做的是将输入中的任何 * 替换为 .* ,这样当我将字符串与之前的任何内容进行比较时,它将忽略以前的字符。另外,我正在转换“?”成一个占位符值“.”。但是,当我运行编译后的代码时,我收到此错误,因为字符串将特殊字符转换为常规字母。如何让编译器注册这些特殊字符来执行功能?

【问题讨论】:

    标签: java string character


    【解决方案1】:

    只需将这些行更改为:

    compare[counter] = compare[counter].replaceAll("\\*",".*").replaceAll("\\?", "."); 
    

    【讨论】:

      【解决方案2】:

      我假设错误是从行中抛出的

      if (data[counter].matches(compare[counter1]) == true)
      

      如果是这样,最可能的解释是compare[counter1]实际上是null,即它不包含值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2018-04-01
        • 2021-07-15
        相关资源
        最近更新 更多