java - PaseclCase 字符串转大写,下划线分隔

标签 java

<分区>

"PascelCase" 字符串转换为下划线分隔的所有大写字母的最佳方法是什么,例如 "Pascel_CASE"。我写了这段有效的代码:

  private static String pascelCaseToUpperCaseSeparatedByUnderscore(String s) {
        
        String[] values = s.split("(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])");
        
        for (int i = 0, len = values.length; i < len; i++) {
            values[i] = values[i].toUpperCase();
        }
        return String.join("_", values);
    }

但是,有没有更好的方法,比如使用库来做到这一点?

最佳答案

您的正则表达式乍一看很复杂,这可能会让阅读您的代码但不熟悉正则表达式的其他人望而却步。您可以将其替换为这个更紧凑、更易读的:

"(?=\\p{Upper})"

结合流,这一行读起来几乎像纯文本

private static String camelCaseToUpperCaseSeparatedByUnderscore(String s) {
    return Pattern.compile("(?=\\p{Upper})")
                  .splitAsStream(s)
                  .map(String::toUpperCase)
                  .collect(Collectors.joining("_"));
}

关于java - PaseclCase 字符串转大写,下划线分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62973826/

相关文章:

java - Foreach 不能操作一个String 列表?

java - 我不明白为什么 Hibernate 创建一个带有两个连接的查询

java - 如何通过java代码将ASCII码转换成主机二进制码?

java - 带有加载更多按钮和圆形进度条的 ListView

java - 在没有其他线程等待相同对象成本的对象上调用 notify()

java - 我无法使用 Java-Android 中的 FTPClient 连接到 FTP 服务器的主机

java - `Box<Cat>` 是 `Box<? extends Animal>` 的子类型吗?

java - 如何判断一个对象属于某个特定的类

java - 定义我的所有 gradle 项目都可以看到的属性集

java - 将数据动态添加到 LineChart JavaFX