【问题标题】:Spinal Case to Camel Case脊椎病例到骆驼病例
【发布时间】:2015-12-22 16:17:07
【问题描述】:

我的问题几乎与此相反:linux bash, camel case string to separate by dash

非常希望将some-string-like-this 带到SomeStringLikeThis

任何人有一些sed 魔法或其他轻松做到这一点的方法吗?

作为旁注,我的一部分人认为,像 Bash 一样流行,可能有一个库可以帮助进行这样的转换......虽然我还没有找到。如果你知道一个,请告诉我。例如一个库,可以处理标准命名样式之间的常见字符串操作/转换,例如脊椎到下划线、下划线到骆驼、骆驼到脊椎等。

【问题讨论】:

  • 我知道这是旧的,但如果你以大写字母开头的字符串,它被称为 PascalCase 而不是 camelCase。仅供其他发现此内容的人使用。

标签: bash sed


【解决方案1】:

GNU sed

这适用于 GNU sed:

sed -r 's/(^|-)(\w)/\U\2/g'

匹配行首或- 后跟一个字母数字字符,并使用\U 将字符变为大写。

以下是您可以使用它对变量进行操作并将结果分配给另一个变量的方法:

name_upper=$(sed -r 's/(^|-)(\w)/\U\2/g' <<<"$name_spinal")

Perl

在 perl 中几乎是一样的:

perl -pe 's/(^|-)(\w)/\U$2/g'

本机 bash

只是为了好玩,这里有一种方法可以在本机 bash 中实现:

spinal_to_upper() {
    IFS=- read -ra str <<<"$1"
    printf '%s' "${str[@]^}"
}

spinal_to_upper "some-string-like-this"

【讨论】:

  • bash 解决方案不适用于默认 bash 3.2.57 的 Mac。 Perl 似乎是最便携的方式。
【解决方案2】:

很简单

   $string='this-is-a-string' ;

   echo   str_replace('-', '', ucwords($string, "-"));

输出ThisIsAString

【讨论】:

  • 对不起,这不是 bash 的 PHP 吗?我相信发帖人是在要求 bash。
猜你喜欢
  • 2021-08-27
  • 2020-06-21
  • 2018-11-13
  • 2014-09-14
  • 2014-01-07
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多