文字クラスを使用して、ファイル内のすべての小文字を大文字に regsub しようとしています。
regsub -all { [:lower:] } $f { [:upper:] } f
しかし、それは置換を行いません。
ファイルを文字列に読み込み、string toupperを使用するだけです。次に、それをファイルに書き戻します。
set fp [open "somefile" r]
set file_data [read $fp]
close $fp
set file_data [string toupper $file_data]
set fp [open "somefile" "w"]
puts -nonewline $fp $file_data
close $fp
はい、上記は魅力のように機能します。
set f [string toupper $f]
fはリストまたは文字列です。ファイル操作が必要な場合は、通常どおり、ファイルから読み取り、書き込みを行います。
regsubを使用したいだけの場合は、これを試してみてください
set f "this is a line"
regsub -all {.*} $f {[string toupper {&}]} f
set f [subst -nobackslashes -novariables $f]
これで、 fのコンテンツは大文字になります。
注:長い道のりのように見えますが、大文字または小文字にする特定のテキストだけを選択する場合に便利です
ありがとう、