2015-12-22 69 views
5

我的问题是相当多的此相反:linux bash, camel case string to separate by dash脊髓案例,以驼峰

差不多希望利用some-string-like-thisSomeStringLikeThis

任何人都可以通过魔法或其他方式轻松做到这一点吗?

作为一个便笺,我认为一部分像Bash一样受欢迎,可能有一个图书馆可以帮助像这样的转换......我还没有找到一个。如果你知道一个,请告诉我。例如将处理标准的命名方式,如脊柱强调之间的共同字符串操作/转换库,强调骆驼,骆驼脊柱等

回答

9

这适用于GNU的sed:

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

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

这几乎是相同的的Perl:

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

只是为了好玩,这里有一个方法可以做到这在本土的bash:

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

spinal_to_upper "some-string-like-this" 
-3

它很容易

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

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

输出ThisIsAString

+1

是PHP吗? OP正在要求一个sed命令。 – JasonK