キャセリングされた単語を構成単語に分割する簡単な方法はありますか?どのように私は(1)ラクダの言葉を切ることができますか?
たとえば、「特定のCamel Cased Word」に「aCertainCamelCasedWord」を分割し、興味のあるフィールドを選択できるようにしたいとします。これは、単語区切り記号がアンダースコアの場合にはcut(1)を使って簡単に実行されますが、単語がcamelcasedのときはどうすればいいですか?
キャセリングされた単語を構成単語に分割する簡単な方法はありますか?どのように私は(1)ラクダの言葉を切ることができますか?
たとえば、「特定のCamel Cased Word」に「aCertainCamelCasedWord」を分割し、興味のあるフィールドを選択できるようにしたいとします。これは、単語区切り記号がアンダースコアの場合にはcut(1)を使って簡単に実行されますが、単語がcamelcasedのときはどうすればいいですか?
sed 's/\([A-Z]\)/ \1/g'
各大文字をキャプチャし、ストリーム全体のキャプチャを先頭にスペースを置き換えます。
$ echo "aCertainCamelCasedWord" | sed 's/\([A-Z]\)/ \1/g'
a Certain Camel Cased Word
ピュアバッシュ:
name="aCertainCamelCasedWord"
declare -a word # the word array
counter1=0 # count characters
counter2=0 # count words
while [ $counter1 -lt ${#name} ] ; do
nextchar=${name:${counter1}:1}
if [[ $nextchar =~ [[:upper:]] ]] ; then
((counter2++))
word[${counter2}]=$nextchar
else
word[${counter2}]=${word[${counter2}]}$nextchar
fi
((counter1++))
done
echo -e "'${word[@]}'"
興味深いですが、はるかに冗長です。私が言う仕事には、適切なツールを使用してください! ;) –
私はすべてのキャップを分割しないように必要な:複数の大文字の2番目のインスタンスがある場合に
echo 'FAQPage' |sed 's/\([A-Z][^A-Z]\)/ \1/g'
FAQ Page
This answerが正しく動作しません
echo 'FAQPageOneReplacedByFAQPageTwo' | sed 's|\([A-Z][^A-Z]\)| \1|g'
FAQ Page One Replaced ByFAQ Page Two
ので、追加の表現が、私は正規表現を愛すること
echo 'FAQPageOneReplacedByFAQPageTwo' | sed -e 's|\([A-Z][^A-Z]\)| \1|g' -e 's|\([a-z]\)\([A-Z]\)|\1 \2|g'
FAQ Page One Replaced By FAQ Page Two
ために必要です。 – cwallenpoole