Java UUID是不是区分大小写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java UUID是不是区分大小写相关的知识,希望对你有一定的参考价值。

uuid返回的是16进制数。所以其实是不区分大小写的。
但是大部分情况都会把它当字符串来使用,这时就是区分大小写了。
参考技术A

首先说一下原理,我所知道由Java生成的UUID是通过java.Util.UUID的静态方法randomUUID()来生成的。而UUID一般用于数据库的主键填充。

然后回答你的问题,如果你直接使用UUID类的这个方法生成UUID的话,默认是小写英文字符和数字的组合(更准确地说是16进制数)。如果你想区分大小写,那么有两种方法:

1、在生成UUID后做大写处理,再存入数据库。当然,你在查询数据库的数据时,涉及到主键时也要注意相应条件的改变;

2、先存入数据库,然后在查询条件中进行处理。一般的关系数据库都会有字符大小写相关的函数。

结论:默认生成的UUID是小写的,可以通过其他方式将其改成大写。因为数据库对大小写是区分的,所以相当于对UUID也是区分大小写的。

参考技术B

    首先UUID不是Java的,UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准。

    Java只是提供了生成UUID的方法,大小写是否区分是看你的代码逻辑判断,你希望大小写区分就区分,不区分就忽略大小写比较。

参考技术C

    Java中UUID生成的时候,默认是小写的,比如这个(ff3c1234-4108-4679-abdd-fe45dd713780)

    Java中生成UUID后,可以通过toLowerCase()转换成小写。通过.toUpperCase()转换成大写。

    大小写一致后,在进行对比。

参考技术D uuid返回的是16进制数。所以其实是不区分大小写的。
但大部分情况都会把它当字符串来使用,这时就是区分大小写了。

Java RegEx 是不是不区分大小写?

【中文标题】Java RegEx 是不是不区分大小写?【英文标题】:Is Java RegEx case-insensitive?Java RegEx 是否不区分大小写? 【发布时间】:2011-03-27 01:16:50 【问题描述】:

在 Java 中,当执行 replaceAll 以查找正则表达式模式时:

replaceAll("\\?i\\b(\\w+)\\b(\\s+\\1)+\\b", "$1"); 

(删除重复的连续不区分大小写的单词,例如测试测试),我不确定我把 ?i 放在哪里。我读到它应该在开头,但如果我把它拿出来,我会发现重复的连续单词(例如测试测试),但不是不区分大小写的单词(例如测试测试)。所以我想我可以在开头添加 ?i ,但这似乎并没有完成工作。有什么想法吗?谢谢!

【问题讨论】:

看看这个***.com/a/55980176/3593084 【参考方案1】:

如果您的整个表达式不区分大小写,则只需指定 CASE_INSENSITIVE 标志:

Pattern.compile(regexp, Pattern.CASE_INSENSITIVE)

【讨论】:

感谢您的回答。这正是我一直在寻找的。在 python 中,我们有 re.IGNORECASE 在 JAVA 中寻找类似的答案。 Bit 它不适用于某些西里尔符号和德语变音符号。【参考方案2】:

RegexBuddy 告诉我是否要在开头包含它,这是正确的语法:

"(?i)\\b(\\w+)\\b(\\s+\\1)+\\b"

【讨论】:

【参考方案3】:

是的,可以在 Java 正则表达式中随意启用和禁用不区分大小写。

看起来你想要这样的东西:

    System.out.println(
        "Have a meRry MErrY Christmas ho Ho hO"
            .replaceAll("(?i)\\b(\\w+)(\\s+\\1)+\\b", "$1")
    );
    // Have a meRry Christmas ho

请注意嵌入 Pattern.CASE_INSENSITIVE 标志是(?i) 而不是\?i。另请注意,已从模式中删除了一个多余的 \b

(?i) 放置在模式的开头以启用不区分大小写。在这种特殊情况下,它不会在模式的后面被覆盖,因此实际上整个模式是不区分大小写的。

值得注意的是,实际上您可以将不区分大小写限制在整个模式的某些部分。因此,将它放在哪里的问题实际上取决于规范(尽管对于这个特定问题并不重要,因为\w 不区分大小写。

为了演示,这里有一个类似的例子,将"AaAaaA" 之类的字母折叠成"A"

    System.out.println(
        "AaAaaA eeEeeE IiiIi OoooOo uuUuUuu"
            .replaceAll("(?i)\\b([A-Z])\\1+\\b", "$1")
    ); // A e I O u

现在假设我们指定只有以大写字母开头的运行才应该折叠。然后我们必须把(?i)放到合适的位置:

    System.out.println(
        "AaAaaA eeEeeE IiiIi OoooOo uuUuUuu"
            .replaceAll("\\b([A-Z])(?i)\\1+\\b", "$1")
    ); // A eeEeeE I O uuUuUuu

更一般地说,您可以根据需要启用和禁用模式中的任何标志。

另见

java.util.regex.Pattern regular-expressions.info/Modifiers 在正则表达式中指定模式 你可以用/(?i)regex/代替/regex/i(Java中的Pattern.CASE_INSENSITIVE只为正则表达式的一部分打开和关闭模式 你也可以/first(?i)second(?-i)third/ 修饰符跨度 你也可以/first(?i:second)third/ regular-expressions.info/Word Boundaries(\w\s 之间总是有一个 \b

相关问题

Can you make just part of a regex case-insensitive? Case sensitive and insensitive in the same pattern

【讨论】:

【参考方案4】:

您还可以将您要检查模式匹配的初始字符串引导为小写。并分别在您的模式中使用小写符号。

【讨论】:

【参考方案5】:

您还可以匹配不区分大小写的正则表达式,并通过使用 Pattern.CASE_INSENSITIVE 常量使其更具可读性,例如:

Pattern mypattern = Pattern.compile(MYREGEX, Pattern.CASE_INSENSITIVE);
Matcher mymatcher= mypattern.matcher(mystring);

【讨论】:

这比(?i) 更易读,Java 正则表达式已经很不可读了:S

以上是关于Java UUID是不是区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

Java UUID是不是区分大小写

Java RegEx 是不是不区分大小写?

Java:比较字符数组是不是区分大小写? [复制]

java中区分大小写吗???

如何在Java中以不区分大小写的方式检查一个字符串是不是包含另一个字符串?

Java区分大小写字母数字和符号