精华内容
下载资源
问答
  • Java 不区分大小写比较字符

    千次阅读 2018-07-13 15:16:00
    在项目中需要实现一个功能,获取数据库表的所有列,比如...{ name:"机哥", age:26, Height:"60kg", salary:"100块"} ,插入之前比较,发现salary在表中,把salary剔除。然后发现Height也被剔除了,因为在列中...

    在项目中需要实现一个功能,获取数据库表的所有列,比如user表有 [name,age,height]三个字段,在插入insert之前需要判断插入的列是否在表的列字段中,例如需要插入的数据为

    { name:"机哥", age:26, Height:"60kg", salary:"100块"} ,插入之前比较,发现salary不在表中,把salary剔除。然后发现Height也被剔除了,因为不在列中。

    jdk库没有现成的方法(最接近的是contains方法),自己实现了一个,如下:

    public static void main(String[] args) {
            String orignal = "Height";
    
            String[] arry = {"name","age","height"};
    
            if(listContains(Arrays.asList(arry), orignal)){
                System.out.printf("success");
            }
        }
    
        private static boolean listContains(List<String> list, String ele){
            for(String t:list)
            {
                if(t.equalsIgnoreCase(ele))
                    return true;
            }
            return false;
        }

    原来用的是ArrayList.contains()方法,是区分大小写的,contains内部通过indexOf(ele) > 0实现,indexOf代码如下:

    public int indexOf(Object o) {
            if (o == null) {
                for (int i = 0; i < size; i++)
                    if (elementData[i]==null)
                        return i;
            } else {
                for (int i = 0; i < size; i++)
                    if (o.equals(elementData[i])) //equals比较
                        return i;
            }
            return -1;
        }

    然后看下equalsIngoreCase()方法实现

     public boolean equalsIgnoreCase(String anotherString) {
            return (this == anotherString) ? true
                    : (anotherString != null)
                    && (anotherString.value.length == value.length)
                    && regionMatches(true, 0, anotherString, 0, value.length);
        }

    首先比较对象引用相等,然后串长度一样,最后调用regionMatches()方法

    public boolean regionMatches(boolean ignoreCase, int toffset,
                String other, int ooffset, int len) {
            char ta[] = value;
            int to = toffset;
            char pa[] = other.value;
            int po = ooffset;
            // Note: toffset, ooffset, or len might be near -1>>>1.
            if ((ooffset < 0) || (toffset < 0)
                    || (toffset > (long)value.length - len)
                    || (ooffset > (long)other.value.length - len)) {
                return false;
            }
            while (len-- > 0) {
                char c1 = ta[to++];
                char c2 = pa[po++];
                if (c1 == c2) {
                    continue;
                }
                if (ignoreCase) {
                    // If characters don't match but case may be ignored,
                    // try converting both characters to uppercase.
                    // If the results match, then the comparison scan should
                    // continue.
                    char u1 = Character.toUpperCase(c1);
                    char u2 = Character.toUpperCase(c2);
                    if (u1 == u2) {
                        continue;
                    }
                    // Unfortunately, conversion to uppercase does not work properly
                    // for the Georgian alphabet, which has strange rules about case
                    // conversion.  So we need to make one last check before
                    // exiting.
                    if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
                        continue;
                    }
                }
                return false;
            }
            return true;
        }

    regionMatches这个函数有点意思,首先是边界检查,如果不符合规则返回false;

    之后开始字符比较,如果相等,继续比较;如不相等并忽略大小写,都转成大写比较,如果还是不相等,都转成小写比较,最后还是不相等,返回false。

    为什么转成大小比较不相等还不够,还要转成小写的,那是因为有格鲁吉亚字母(Georgian alphabet):大写不等还不一定不等,还需要转小写   比如 ქართული დამწერლობა   哈哈  有意思。

    转载于:https://www.cnblogs.com/zhengwangzw/p/9305136.html

    展开全文
  • 问题 如何在忽略大小写的情况下,进行字符串的相等比较, 解决 使用String中的equalsIgnoreCase。 代码示例

    场景

    校验cookie名称,cookie 名称本是区分大小写的,只不过由于 ASP 进行了封装,使得 cookie 名称不区分大小写。

    问题

    如何在忽略大小写的情况下,进行字符串的相等比较,

    解决

    使用String中的equalsIgnoreCase。

    代码示例

    //true
    "abc".equalsIgnoreCase("aBc");

     

    展开全文
  • java不区分大小写查找字符

    千次阅读 2020-03-06 21:16:01
    字符串查找上,很重要一个是不区分大小写的查找,而java的api中没有直接提供这个方法。 public class StringUtil { public static void main(String[] args) { String t="aaaaaaaaaa<table><...

     在字符串查找上,很重要一个是不区分大小写的查找,而java的api中没有直接提供这个方法。

    public class StringUtil {  
      
          
        public static void main(String[] args) {  
          
            String t="aaaaaaaaaa<table></table>aaa<table></table>";  
            String s="<TABLE";  
              
    //      t="";  
              
            System.out.println("length="+t.length());  
              
            System.out.println(t.indexOf(s,0));  
            System.out.println(ignoreCaseIndexOf(t, s,0));  
              
            System.out.println(t.lastIndexOf(s));     
            System.out.println(ignoreCaseLastIndexOf(t, s));  
        }  
    /** 
         * 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始,不区分大小。 
         *  
         * @param subject 被查找字符串。 
         * @param search 要查找的子字符串。 
         * @return 指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 
         */  
        public static int ignoreCaseIndexOf(String subject, String search) {  
            return ignoreCaseIndexOf(subject, search,-1);  
        }  
          
        /** 
         * 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始,不区分大小。 
         *  
         * @param subject 被查找字符串。 
         * @param search 要查找的子字符串。 
         * @param fromIndex 开始查找的索引位置。其值没有限制,如果它为负,则与它为 0 的效果同样:将查找整个字符串。 
         *          如果它大于此字符串的长度,则与它等于此字符串长度的效果相同:返回 -1。 
         * @return 指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 
         */  
        public static int ignoreCaseIndexOf(String subject, String search,  
                int fromIndex) {  
              
            //当被查找字符串或查找子字符串为空时,抛出空指针异常。  
            if (subject == null || search == null) {  
                throw new NullPointerException("输入的参数为空");  
            }  
              
            fromIndex = fromIndex < 0 ? 0 : fromIndex;  
      
            if (search.equals("")) {  
                return fromIndex >= subject.length() ? subject.length() : fromIndex;  
            }  
      
            int index1 = fromIndex;  
            int index2 = 0;  
      
            char c1;  
            char c2;  
      
            loop1: while (true) {  
      
                if (index1 < subject.length()) {  
                    c1 = subject.charAt(index1);  
                    c2 = search.charAt(index2);  
                      
                } else {  
                    break loop1;  
                }  
      
                while (true) {  
                    if (isEqual(c1, c2)) {  
      
                        if (index1 < subject.length() - 1  
                                && index2 < search.length() - 1) {  
                              
                            c1 = subject.charAt(++index1);  
                            c2 = search.charAt(++index2);  
                        } else if (index2 == search.length() - 1) {  
                          
                            return fromIndex;  
                        } else {  
                              
                            break loop1;  
                        }  
                          
                    } else {  
                          
                        index2 = 0;  
                        break;  
                    }  
                }  
                //重新查找子字符串的位置  
                index1 = ++fromIndex;  
            }  
      
            return -1;  
        }  
          
        /** 
         * 返回指定子字符串在此字符串中最右边出现处的索引。 
         *  
         * @param subject 被查找字符串。  
         * @param search 要查找的子字符。 
         * @return 在此对象表示的字符序列中最后一次出现该字符的索引;如果在该点之前未出现该字符,则返回 -1 
         */  
        public static int ignoreCaseLastIndexOf(String subject, String search){  
            if(subject==null){  
                throw new NullPointerException("输入的参数为空");  
            }  
            else{  
                return ignoreCaseLastIndexOf(subject,search,subject.length());  
            }  
        }  
          
        /** 
         * 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向查找。 
         * @param subject 被查找字符串 。 
         * @param search 要查找的子字符串。 
         * @param fromIndex 开始查找的索引。fromIndex 的值没有限制。如果它大于等于此字符串的长度,则与它小于此字符串长度减 1 的效果相同:将查找整个字符串。 
         *          如果它为负,则与它为 -1 的效果相同:返回 -1。  
         * @return 在此对象表示的字符序列(小于等于 fromIndex)中最后一次出现该字符的索引; 
         *          如果在该点之前未出现该字符,则返回 -1 
         */  
        public static int ignoreCaseLastIndexOf(String subject, String search,  
                int fromIndex) {  
              
            //当被查找字符串或查找子字符串为空时,抛出空指针异常。  
            if (subject == null || search == null) {  
                throw new NullPointerException("输入的参数为空");  
            }  
      
            if (search.equals("")) {  
                return fromIndex >= subject.length() ? subject.length() : fromIndex;  
            }  
              
            fromIndex = fromIndex >= subject.length() ? subject.length() - 1 : fromIndex;  
      
            int index1 = fromIndex;  
            int index2 = 0;  
      
            char c1;  
            char c2;  
      
            loop1: while (true) {  
      
                if (index1 >= 0) {  
                    c1 = subject.charAt(index1);  
                    c2 = search.charAt(index2);  
                } else {  
                    break loop1;  
                }  
      
                while (true) {  
                    //判断两个字符是否相等  
                    if (isEqual(c1, c2)) {  
                        if (index1 < subject.length() - 1  
                                && index2 < search.length() - 1) {  
                              
                            c1 = subject.charAt(++index1);  
                            c2 = search.charAt(++index2);  
                        } else if (index2 == search.length() - 1) {  
                          
                            return fromIndex;  
                        } else {  
                              
                            break loop1;  
                        }  
                    } else {  
                        //在比较时,发现查找子字符串中某个字符不匹配,则重新开始查找子字符串  
                        index2 = 0;  
                        break;  
                    }  
                }  
                //重新查找子字符串的位置  
                index1 = --fromIndex;  
            }  
      
            return -1;  
        }  
          
        /** 
         * 判断两个字符是否相等。 
         * @param c1 字符1 
         * @param c2 字符2 
         * @return 若是英文字母,不区分大小写,相等true,不等返回false; 
         *          若不是则区分,相等返回true,不等返回false。 
         */  
        private static boolean isEqual(char c1,char c2){  
                //  字母小写                   字母大写  
            if(((97<=c1 && c1<=122) || (65<=c1 && c1<=90))  
                    && ((97<=c2 && c2<=122) || (65<=c2 && c2<=90))  
                    && ((c1-c2==32) || (c2-c1==32))){  
                  
                return true;  
            }  
            else if(c1==c2){  
                return true;  
            }  
              
            return false;  
        }  
      
    } 

     

    展开全文
  • 字符串对比 问题描述  给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之... 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(...

    字符串对比

    问题描述
      给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
      1:两个字符串长度不等。比如 Beijing 和 Hebei
      2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
      3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
      4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
      编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
    输入格式
      包括两行,每行都是一个字符串
    输出格式
      仅有一个数字,表明这两个字符串的关系编号
    样例输入
    BEIjing
    beiJing
    样例输出
    3

    package shifengshou;
    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		
    		//字符串对比
    		Scanner in = new Scanner(System.in);
    		String s1 = in.next();
    		String s2 = in.next();
    		
    		
    		if(s1.length() != s2.length())
    		{
    			System.out.println("1");
    		}
    		
    		else
    		{
    			if(s1.equals(s2))//区分大小写的判断
    			System.out.println("2");
    			
    			else if(s1.equalsIgnoreCase(s2))//忽略大小写的判断
    			System.out.println("3");
    		}
    		
    	}
    }
    
    
    展开全文
  • equalsIgnoreCase 判断字符串 equalsIgnoreCase 判断 区分大小写 public class Test { public static void main(String args[]) { String Str1 = new String("runoob"); String Str2 = Str1; }
  • java 区分大小写_Java区分大小写

    千次阅读 2020-09-12 00:47:29
    java 区分大小写 Java is a case-sensitive language, which means that the upper or lower case of letters in your Java programs matter. Java区分大小写的语言,这意味着Java程序中字母的大小写很重要。 ...
  • 有时候我们会在一个字符串中查找是否包含另一个字符串,并且能不区分大小写最好;比如说 : 模糊搜索,输入条件字符查询等。 废话多说了,直接上干货吧,给大家分享下代码里较少的玩法: 沾上一个反手写的测试...
  • java验证码问题(不区分大小写

    千次阅读 2020-11-21 13:37:40
    请查看Random、StringBuilder相关API,定义方法,获取一个包含4个字符的验证码, 每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。例如:7Kt5 import java.util.Random; import java.util.Scanner; public ...
  • char忽略大小写比较的几种方式char上的对比转换为String之后再对比结语 char上的对比 如何忽略大小写比较?我们可以想到的一种方法是将两个字符a 和 b都转换为大写或者小写之后再来比较。 char a = 'h', b = 'H'; //...
  • 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入: BabA 输出: aABb规则 3 :非英文...
  • 在项目中遇到生成随机字符串的一个需求,自己通过实践等总结出一个比较不错的方法,需要的位数越高,重读率越低。 /** * * @param length 需要的字符长度 * @return 返回随机字母数字组合字符串 */ public ...
  • 今天的一个测试程序: function mutation(stringFirst, stringSecond) { var word = ""; for (var i = 0; i < stringSecond.length; i++) { var letter = stringSecond[i]; word += letter; ...
  •    import java.util.regex.Matcher; ...//如果区分大小写,就是把AabcAaB中的a替换成G //如果去分大小写,就是把AabcAaB中的a和A都替换成G replaceString("AabcAaB","a","G
  • java 不区分大小写 高亮替换

    千次阅读 2013-09-13 10:30:31
    现在有字符串"struts StrUts hibernate",我想把 不区分大小写匹配struts的字符串替换为匹配字符串 近期在做一个搜索引擎,需要匹配字符高亮显示,鄙人经过一番搜索现总结代码如下: package cn.crawler.lucene; ...
  • 忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取到值(取到的值为空)的问题 忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取...
  • 1、Java 匹配字符串忽略大小写。 Pattern p=Pattern.compile(“java”,Pattern.CASE_INSENSITIVE); Natcher m=p.matcher(“java Java JAVaIloveJAVA you hateJava”); m.replaceAll(“JAVA”); //将找到的所有...
  • * 是否大小写敏感 * @return 两个字符串是否相等 */ public static Boolean StringEquals(String str1, String str2, Boolean isCase) { if (isCase) { return str1.equals(str2); } if (EmptyUtil....
  • /** * */ ...import java.util.Scanner; /** *@author: Administrator *@date: 2016-12-28 下午01:08:30 */ public class Main { public static void main(String[] args){ Scanner sc=ne
  • equalsIgnoreCase(str):比较字符串内容是否相等,但是会忽略(不区分大小写)大小写 【示例】 public static void main(String[] args) { String str="TOM"; boolean rs = str.equalsIgnoreCase("tom");...
  • 如何在Java中以不区分大小写的方式检查字符串是否包含另一个字符串? 19 answers 19个答案 I have two String s, str1 and str2 . 我有两个String , str1和str2 。 How do I check if str2 is contained within ...
  • contain 不区分大小写

    千次阅读 2015-06-24 00:36:09
    jAVA中如何做到contain 不区分大小写呢? 直接上代码: /*** * 是否包含指定字符串,不区分大小写 * @param input : 原字符串 * @param regex * @param replacement * @return */ public static ...
  • 枚举大小写_不区分大小写的枚举

    千次阅读 2020-06-22 17:56:25
    在developerWorks,我们一直在努力回答您的问题并满足您的需求。 最近,我收到了爱荷华州得梅因市的汤米琼斯的以下来信: ... 在XML Schema规范中找到任何方法可以定义不区分大小写的枚举。...
  • 字符串匹配。功能:基于KMP的算法并且忽略字母大小写字符串匹配;语言:标准C语言。已经在VC2005下编译通过。
  • 1.题目: 2.代码: 3.运行结果:
  • Java一个文件中,多个类名称“不会”区分大小写我们知道,在Java开发中是严格区分大小写的,但是有如下情况,看起来好像又不区分大小写了,这是为什么呢?场景如下总结: 我们知道,在Java开发中是严格区分大小写的,...
  • set不区分大小写

    千次阅读 2018-04-03 16:05:06
    #include ...// 所以调用其自身成员函数就是不区分大小写比较,但要是调用find算法,则不会输出。 // if(ciss.find("aaa")!=ciss.end()) // printf("YES\n"); cout (); return 0 ; }
  • public class Test { public static String DeleteWord (String s){ String regex = ...//以该字符串为例,删除字符串中所有的 "The" 单词,不区分大小写 System. out .println(DeleteWord(s)); } }
  • mogodb不区分大小写查询

    千次阅读 2018-10-10 14:08:26
    以下命令将查找不区分大小写字符串 runoob: &gt;db.posts.find({post_text:{$regex:"runoob",$options:"$i"}}) 集合中会返回所有包含字符串 runoob 的数据,且不区分大小写: { .....
  • 下面是测试代码,一定要这样输入,两个字符串用空格隔开,然后用split方法读取待处理的两个字符串: public static void main(String[] args) { Scanner sca = new Scanner(System.in); String strFirst = sca....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,294
精华内容 58,117
关键字:

java字符不区分大小写

java 订阅