1

私は2つの単語を組み合わせ KitnerCoster て、真ん中にスペースを追加したい.

4

2 に答える 2

4

正規表現を使用すると、次のようなことができます

s/([a-z])([A-Z])/'$1 $2'/g

ただし、正規表現を作成する最初の試行は通常失敗するため、いずれかの部分を修正する必要がある場合があります。

1 文字の長い単語をどのように処理しますか? FooXBar の「X」のように?X は、上記の正規表現では別の単語として認識されません。

于 2010-08-06T13:53:18.100 に答える
3

最初の単語が大文字であるかどうか気にしますか? そうでない場合は、

// ASCII
preg_replace('/([a-z])([A-Z])/', '$1 $2', $string)
preg_replace('/([[:lower:]])([[:upper:]])/', '$1 $2', $string)

// Unicode (UTF-8)
preg_replace('/(\p{Ll})(\p{Lu})/u', '$1 $2', $string)

あなたが気にし、修正したいKitnerCostnerが放っておくkitnerCostnerなら、そうしてください

// ASCII
preg_replace('/\b([A-Z]\S*[a-z])([A-Z])/', '$1 $2', $string)
preg_replace('/\b([[:upper:]]\S*[[:lower:]])([[:upper:]])/', '$1 $2', $string)

// Unicode (UTF-8)
preg_replace('/\b(\p{Lu}\S*\p{Ll})(\p{Lu})/u', '$1 $2', $string)

ASCII 文字のみに一致するバージョンと、すべての Unicode 文字に一致するバージョンを提供しました。Unicode は PHP 5.1.0 で利用可能です。

于 2010-08-06T13:57:21.057 に答える