我的问题恰恰相反:linux bash, camel case string to separate by dash
非常希望将some-string-like-this
带到SomeStringLikeThis
。
任何人都有一些sed
魔术或其他方法可以轻松地做到这一点?
作为旁注,我的一部分认为像Bash一样受欢迎,那里可能有一个图书馆可以帮助这样的转换...我还没有找到一个。如果您知道其中一个,请告诉我。例如一个库,可以处理标准命名样式之间的常见字符串操作/转换,例如脊柱到下划线,骆驼下划线,骆驼到脊柱等等。
答案 0 :(得分:17)
这适用于GNU sed:
sed -r 's/(^|-)(\w)/\U\2/g'
匹配行的开头或-
后跟字母数字字符,并使用\U
将字符设为大写。
以下是如何使用它操作变量并将结果分配给另一个变量:
name_upper=$(sed -r 's/(^|-)(\w)/\U\2/g' <<<"$name_spinal")
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"
答案 1 :(得分:-6)
非常容易
$string='this-is-a-string' ;
echo str_replace('-', '', ucwords($string, "-"));
输出ThisIsAString