一个字符串,包含大小写的混杂。比如AbcDEFgh,我要判断是否包含不顾大小写的efg,但又不能改变原来的String.
现在碰到的问题是如果用了toLowerCase()的话,原来的String就改变了。
谢谢!

解决方案 »

  1.   

    String是不可变的。
    你toLowerCase()不会改变初始的String对象的。
    除非你重新赋值了。
      

  2.   


       public static boolean contain(String sourceString ) {
    Pattern p = Pattern.compile(".*[eE][fF][gG].*", Pattern.DOTALL);
    Matcher m = p.matcher(sourceString);
    while (m.find()) {
        return true;

    return false;
        }
      

  3.   


    public class Test {
    public static void main(String[] args) {
    String str1 = "ABcdEfG";
    String s = "EFg";
    System.out.println(str1.toLowerCase().contains(s.toLowerCase()));//此时str1不变
    }
    }
      

  4.   

    正解。String s = "AbcE";
    s.toLowerCase();
    System.out.println(s);楼主运行这段代码就知道了。
      

  5.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class test {
    public static void main(String[] args) {
    System.out.println(contain("dssd"));
    } public static boolean contain(String sourceString) {
    Pattern p = Pattern.compile("[eEfFgG]");
    Matcher m = p.matcher(sourceString);
    while (m.find()) {
    return true;
    }
    return false;
    }}
      

  6.   


    public class StringDemo01{
    public static void main(String args[]){
    String str = "AbcDEFgh";
    String lower = str.toLowerCase(); //str没有改变,而是返回一个小写字符串
    System.out.println("是否存在efg:"+lower.indexOf("efg")); //是否存在
    }
    }
      

  7.   


       public static boolean contain(String sourceString ) {
        Pattern p = Pattern.compile("efg", Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(sourceString);
        while (m.find()) {
            return true;
        } 
        return false;
        }
      

  8.   

    boolean b =  str.matches(".*[eE][fF][gG].*");