私は文字列を持っています
$string= 'AbCdEf';
そして、tr関数を使用して、すべての大文字を小文字に変換し、すべての小文字を大文字に変換したいと思います。基本的には逆にしてなりたいです。
aBcDeF
私はこの行を思いついたが、私が望むことをするためにそれを変更する方法がわからない。何か助けてください?
$string=~ tr/A-Z/a-z/;
ありがとう!
私は文字列を持っています
$string= 'AbCdEf';
そして、tr関数を使用して、すべての大文字を小文字に変換し、すべての小文字を大文字に変換したいと思います。基本的には逆にしてなりたいです。
aBcDeF
私はこの行を思いついたが、私が望むことをするためにそれを変更する方法がわからない。何か助けてください?
$string=~ tr/A-Z/a-z/;
ありがとう!
トムの要求に応じて、Unicode-clean(またはlocales-clean)バージョン:
s/([[:upper:]])|([[:lower:]])/defined $1 ? lc $1 : uc $2/eg
$string =~ tr/A-Za-z/a-zA-Z/;
次のいずれかの方法で完全なUnicodeソリューションを実行できます。
s /(\ p {CWU})| (\ p {CWL})/ defined $ 1?uc $ 1:lc $ 2 / gex;
またはこのように
s /(\ p {CWL})| (\ p {CWU})/ defined $ 1?lc $ 1:uc $ 2 / gex;
大文字がDZで小文字がdzであるDzのように、両方向で大文字と小文字を変更するもので何をしたいかによって異なります。
この入力全体でこれら2つの置換の2番目を実行する場合:
@0040コマーシャルAT
©00A9著作権記号
Å212BANGSTROMSIGN
⒜249CPARENTHESIZEDLATINSMALL LETTER A
Ⓐ24B6CIRCLEDLATINCAPITAL LETTER A
ⓐ24D0CIRCLEDLATINSMALL LETTER A
A FF21 FULLWIDTH LATIN CAPITAL LETTER A
FF41全幅ラテン語の小さな文字A
Ⓒ24B8CIRCLEDLATINCAPITAL LETTER C
ⓒ24D2CIRCLEDLATINSMALL LETTER C
DZ01F1ラテン大文字DZ
Dz01F2ラテン大文字Dと小文字Z
dz01F3LATINSMALLLETTER DZ
ⅲ2172小さなローマ数字の3つ
S0053ラテン大文字S
s0073ラテン文字S
ſ017F LATIN SMALL LETTER LONG S
⒮24AEPARENTHESIZEDLATINSMALL LETTER S
Ⓢ24C8CIRCLEDLATINCAPITAL LETTER S
ⓢ24E2CIRCLEDLATINSMALL LETTER S
ꞄA784ラテン大文字インシュラーS
ꞅA785LATINSMALLLETTER INSULAR S
ß00DFラテンスモールレターシャープS
ẞ1E9Eラテン大文字シャープS
Ⅶ2166ローマ数字セブン
ⅻ217Bスモールローマ数字12
次の結果が得られます。
@0040コマーシャル
©00a9著作権記号
å212bオングストローム記号
⒜249c括弧で囲まれたラテン小文字a
ⓐ24b6丸で囲まれたラテン大文字a
Ⓐ24d0丸で囲まれたラテン小文字a
aff21全幅ラテン大文字a
AAff41全幅ラテン小文字a
ⓒ24b8丸で囲まれたラテン大文字c
Ⓒ24d2丸で囲まれたラテン小文字c
dz01f1ラテン大文字dz
dz01f2ラテン大文字dと小文字z
DZ01f3ラテン小文字dz
Ⅲ2172小さなローマ数字3
s0053ラテン大文字s
S0073ラテン小文字s
S017fラテン小文字ロングs
⒮24ae括弧で囲まれたラテン小文字s
ⓢ24c8丸で囲まれたラテン大文字s
Ⓢ24e2丸で囲まれたラテン小文字s
ꞅa784ラテン大文字insulars
Ꞅa785ラテン文字インシュラー体のS
SS00dfラテン小文字シャープs
ß1e9eラテン大文字シャープs
ⅶ2166ローマ数字7
Ⅻ217b小さなローマ数字12
最初の関数を使用して(そのセットで)異なる唯一の部分は、dzシーケンスが代わりに次のようになることです。
dz01f1ラテン大文字dz
DZ01f2ラテン大文字dと小文字z
DZ01f3ラテン小文字dz
上位または下位のテストだけを使用したくない理由は、大文字と小文字を区別しても大文字と小文字が変わらない大文字と小文字が区別されるコードポイントがたくさんあるため、不要な作業を行うためです。たとえば、これらはすべて大文字と小文字を区別するコードポイントですが、大文字でも小文字でも変更されません。
ª00AA女性の序数標識
ᴬ1D2CMODIFIERLETTER CAPITAL A
ᴀ1D00ラテン文字スモールキャピタルA
ℂ2102DOUBLE-STRUCKCAPITALC
ᴰ1D30MODIFIERLETTERCAPITAL D
ʣ02A3LATINSMALL LETTER DZ DIGRAPH
ʤ02A4LATINSMALL LETTER DEZH DIGRAPH
ℇ2107オイラー定数
ɘ0258LATINSMALLLETTER REVERSED E
ɞ025ELATINSMALLLETTER CLOSED REVERSED OPEN E
ℊ210AスクリプトスモールG
ɡ0261LATINSMALLLETTER SCRIPT G
ɢ0262ラテン文字スモールキャピタルG
ʰ02B0MODIFIERLETTER SMALL H
ℋ210BスクリプトキャピタルH
ℎ210Eプランク定数
ℹ2139情報源
ʲ02B2MODIFIERLETTER SMALL J
ℳ2133スクリプトキャピタルM
º00BA男性的な序数標識
ɸ0278LATINSMALLLETTER PHI
ĸ0138LATINSMALLLETTER KRA
ʏ028Fラテン文字小大文字Y
ℼ213CDOUBLE-STRUCKSMALL PI
したがって、それらが大文字または小文字であることを検出し、逆マッピング関数を呼び出して、何も変更されていないことを検出します。私は理解します、なぜわざわざ?