-1

我有一个字符串为“ ISTERC Mini BAT

问题是单词 Mini 可能以区分大小写的字母出现(Mini 或 MINI)

要求是,我需要从字符串中删除单词Mini/MINI,它应该看起来像“ ISTERC BAT ”(还在 Mini 之前删除了一个额外的空格)

我试过这种方式

public class Test {

    public static void main(String args[]) {

        String Symbol = "ISTERC Mini BAT";

        if (Symbol.contains("Mini") || Symbol.contains("MINI")) {
            Symbol = Symbol.replace(" Mini", "");
        }

        System.out.println(Symbol);

    }

}

问题是我是否应该写另一个if condition 来处理 if contains ("MINI")

回复后尝试这种方式

public class Test {

    public static void main(String args[]) {

        String Symbol = "ISTERC Mini BAT";

        if (Symbol.contains("(?i)mini")) {

            Symbol = Symbol.replaceAll(" (?i)mini", "");
        }

        System.out.println(Symbol);

    }

}
4

4 回答 4

2

使用String#replaceAll并传递正则表达式(?i)word(?i) 启用不区分大小写

Symbol = Symbol.replaceAll("(?i)mini\\s+", "");
于 2013-03-01T05:53:48.943 回答
1

尝试

Symbol = Symbol.replaceAll("(?i) Mini", "");

(?i)将使 replaceAll 方法忽略字符大小写敏感。

它应该适用于 MINI、MiNi 和任何其他可能性。

编辑#1: System.out.println(Symbol.contains("(?i) Mini", ""));将导致布尔响应false,因为它不采用正则表达式。它将被(?i) Mini视为一个字符串本身。

于 2013-03-01T05:55:18.887 回答
1
public class Test {
    public static void main(String args[]) {
        String Symbol = "ISTERC MINI BAT";
        Symbol = Symbol.replaceAll("( mini| MINI)","");  
        System.out.println(Symbol);
    }
}
于 2013-03-01T05:57:32.433 回答
0

使用模式

Pattern pattern = Pattern.compile("mini", Pattern.CASE_INSENSITIVE);
System.out.println(pattern.matcher(symbol).replaceAll(""));
于 2013-03-01T05:55:27.237 回答