脊柱套到骆驼案

时间:2015-12-22 16:17:07

标签: bash sed

我的问题恰恰相反:linux bash, camel case string to separate by dash

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

任何人都有一些sed魔术或其他方法可以轻松地做到这一点?

作为旁注,我的一部分认为像Bash一样受欢迎,那里可能有一个图书馆可以帮助这样的转换...我还没有找到一个。如果您知道其中一个,请告诉我。例如一个库,可以处理标准命名样式之间的常见字符串操作/转换,例如脊柱到下划线,骆驼下划线,骆驼到脊柱等等。

2 个答案:

答案 0 :(得分:17)

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"

答案 1 :(得分:-6)

非常容易

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

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

输出ThisIsAString