2013-03-01 80 views
-1

我有一个字符串为“ISTERC迷你BAT的Java:替换字符串中的单词

的问题是,这个词迷你可以进来区分大小写字母(小型或迷你)

的要求是: ,我需要从字符串中删除的字迷你/ MINI,它应该看起来像“ISTERC BAT” (还删除了迷你前的额外空间)

我已经试过这样

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来处理,如果包含( “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); 

    } 

} 
+0

确定Mini和MINI是唯一允许的形式?你确定它总是被空间包围吗?你确定它只出现一次吗?您的(部分正确)实施意味着您承担了上述所有情况。 – 2013-03-01 05:54:26

+0

你为什么用包含方法检查..替换方法将只会替换如果给定的字是存在的(包含在字符串中) – 2013-03-01 06:06:16

回答

1

T RY与

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

(?i)会使的replaceAll方法忽略字符的情况下的灵敏度。

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

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

+0

这看起来不错,我的另一个问题是,我可以使用与Contains也? – Pawan 2013-03-01 05:57:44

+0

不,'String.contains'方法不会像正则表达式那样使用正则表达式。也许你想用'Pattern'和'Matcher'来实现它。 – D3V 2013-03-01 06:01:25

+0

非常感谢Santosh。 – Pawan 2013-03-01 06:02:06

2

使用String#replaceAll这种方式,并通过正则表达式(?i)word(?我)打开时不区分大小写

Symbol = Symbol.replaceAll("(?i)mini\\s+", ""); 
+0

其中'(?i)'表示不区分大小写。 – Nishant 2013-03-01 05:54:42

+0

可能会删除尾部空格字符'Symbol.replaceAll(“(?i)mini \\ s +”,“”)' – Nishant 2013-03-01 05:57:46

+0

如果需要的话。 – 2013-03-01 05:58:52

0

使用Pattern

Pattern pattern = Pattern.compile("mini", Pattern.CASE_INSENSITIVE); 
System.out.println(pattern.matcher(symbol).replaceAll("")); 
1
public class Test { 
    public static void main(String args[]) { 
     String Symbol = "ISTERC MINI BAT"; 
     Symbol = Symbol.replaceAll("(mini| MINI)",""); 
     System.out.println(Symbol); 
    } 
}