将 snake_case 更改为 PascalCase 的 Javascript 方法

标签 javascript regex string

我正在寻找一种将 snake_case 转换为 PascalCase 同时保持斜线完整的 JS 方法。

// examples:
post -> Post
admin_post -> AdminPost
admin_post/new -> AdminPost/New
admin_post/delete_post -> AdminPost/DeletePost

等等

我有一些东西可以将 snake_case 转换为 camelCase 并保留斜线,但我无法将其转换为 PascalCase

这是我到目前为止所得到的:

_snakeToPascal(string){
    return string.replace(/(_\w)/g, (m) => {
      return m[1].toUpperCase();
    });
  }

感谢任何建议!

编辑 - 找到解决方案

这是我最终使用的。如果您使用它,请注意我正在使用 this._upperFirst 因为我在类里面使用它。它有点油腻,但很管用。

  _snakeToPascal(string){
    return string.split('_').map((str) => {
      return this._upperFirst(
        str.split('/')
        .map(this._upperFirst)
        .join('/'));
    }).join('');
  }

  _upperFirst(string) {
    return string.slice(0, 1).toUpperCase() + string.slice(1, string.length);
  }

最佳答案

这是一个保留斜杠并将 snake_case 转换为您想要的 PascalCase 的解决方案。

const snakeToPascal = (string) => {
  return string.split("/")
    .map(snake => snake.split("_")
      .map(substr => substr.charAt(0)
        .toUpperCase() +
        substr.slice(1))
      .join(""))
    .join("/");
};

它首先在 '/' 字符处拆分输入,以生成需要转换的 snake_case 字符串数组。然后,它在 '_' 字符处拆分这些字符串以生成一个子字符串数组。然后将此数组中的每个子字符串大写,然后重新连接成单个 PascalCase 字符串。 PascalCase 字符串然后由分隔它们的 '/' 字符重新连接。

关于将 snake_case 更改为 PascalCase 的 Javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082153/

相关文章:

javascript - 如果 "obj"未定义,则 angular.isDefined(obj) 不起作用

javascript - 如何更改全日历上的光标指针?

java - 匹配 "-"有完全意想不到的结果

java - 正则表达式匹配任何合法的java函数声明的格式

python - 在使用正则表达式库时向 python 中的符号添加反斜杠

javascript - 获取 JSON 键的文本值

javascript - 如何将千位分隔符添加到我的 html 表单

javascript - 使用 Gmail 帐户登录我的应用程序?

java - 从android中的String数组中删除一个元素

c# - 从字节数组转换为字符串十六进制 C#