Tcl-tk-tcl-strings
Tcl-ストリング
Tclのプリミティブデータ型は文字列であり、多くの場合、文字列のみの言語としてTclで引用符を見つけることができます。 これらの文字列には、英数字、数字のみ、ブール値、またはバイナリデータを含めることができます。 Tclは16ビットUnicode文字を使用し、英数字には非ラテン文字、数字または句読点を含む文字を含めることができます。
ブール値は、trueの場合は1、yesまたはtrue、falseの場合は0、no、またはfalseとして表現できます。
文字列表現
他の言語とは異なり、Tclでは、単一の単語の場合に二重引用符を含める必要はありません。 例は次のとおりです-
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
上記のコードが実行されると、次の結果が生成されます-
hello
複数の文字列を表現する場合は、二重引用符または中括弧を使用できます。 以下に示されています-
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable
set myVariable {hello world}
puts $myVariable
上記のコードが実行されると、次の結果が生成されます-
hello world
hello world
文字列エスケープシーケンス
文字リテラルは、プレーン文字(例: 'x')、エスケープシーケンス(例: '\ t')、またはユニバーサル文字(例: '\ u02C0')です。
Tclには特定の文字があり、バックスラッシュが前に付いている場合は特別な意味を持ち、改行(\ n)またはタブ(\ t)のような表現に使用されます。 ここでは、そのようなエスケープシーケンスコードのいくつかのリストを持っています-
Escape sequence | Meaning |
---|---|
\\ | \ character |
\' | ' character |
\" | " character |
\? | ? character |
\a | Alert or bell |
\b | Backspace |
\f | Form feed |
\n | Newline |
\r | Carriage return |
\t | Horizontal tab |
\v | Vertical tab |
以下は、いくつかのエスケープシーケンス文字を示す例です-
#!/usr/bin/tclsh
puts "Hello\tWorld\n\nfinddevguides";
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Hello World
finddevguides
文字列コマンド
文字列コマンドのサブコマンドのリストは、次の表に記載されています-
Sr.No. | Methods & Description |
---|---|
1 |
string1とstring2を辞書順に比較します。 等しい場合は0、string1がstring2の前にある場合は-1、そうでない場合は1を返します。 |
2 |
string2でstring1が最初に出現するインデックスを返します。 見つからない場合、-1を返します。 |
3 |
インデックスにある文字を返します。 |
4 |
string2でstring1が最後に出現したインデックスを返します。 見つからない場合、-1を返します。 |
5 |
文字列の長さを返します。 |
6 |
文字列がパターンに一致する場合、1を返します。 |
7 |
index1からindex2までの文字列の文字の範囲を返します。 |
8 |
小文字の文字列を返します。 |
9 |
大文字の文字列を返します。 |
10 |
文字列の両端のトリム文字を削除します。 デフォルトのトリム文字は空白です。 |
11 |
文字列の左端のトリム文字を削除します。 デフォルトのトリム文字は空白です。 |
12 |
文字列の左端のトリム文字を削除します。 デフォルトのトリム文字は空白です。 |
13 |
indexの文字を含む単語の後の文字のfindstringのインデックスを返します。 |
14 |
indexの文字を含む単語の最初の文字のfindstringのインデックスを返します。 |
一般的に使用されるTcl文字列サブコマンドの例を以下に示します。
文字列比較
#!/usr/bin/tclsh
set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare s1 s2]
if {[string compare s2 s3] == 0} {
puts "String \'s1\' and \'s2\' are same.";
}
if {[string compare s1 s2] == -1} {
puts "String \'s1\' comes before \'s2\'.";
}
if {[string compare s2 s1] == 1} {
puts "String \'s2\' comes after \'s1\'.";
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
-1
String 's1' comes before 's2'.
String 's2' comes after 's1'.
文字列のインデックス
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1"
puts [string first $s2 $s1]
puts "Character at index 0 in s1"
puts [string index $s1 0]
puts "Last occurrence of $s2 in s1"
puts [string last $s2 $s1]
puts "Word end index in s1"
puts [string wordend $s1 20]
puts "Word start index in s1"
puts [string wordstart $s1 20]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6
ひもの長さ
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Length of string s1
11
取り扱いケース
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1]
puts "Lowercase string of s1"
puts [string tolower $s1]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world
トリミング文字
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]
set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]
set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Trim right World in Hello World
Hello
Trim left Hello in Hello World
World
Trim characters s1 on both sides of s2
Hello World
一致する文字列
#!/usr/bin/tclsh
set s1 "[email protected]"
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ]
puts "Matching pattern tcl in s1"
puts [string match {tcl} $s1]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Matching pattern s2 in s1
1
Matching pattern tcl in s1
0
追加コマンド
#!/usr/bin/tclsh
set s1 "Hello"
append s1 " World"
puts $s1
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Hello World
フォーマットコマンド
次の表は、Tclで使用可能なフォーマット指定子のリストを示しています-
Specifier | Use |
---|---|
%s | String representation |
%d | Integer representation |
%f | Floating point representation |
%e | Floating point representation with mantissa-exponent form |
%x | Hexa decimal representation |
いくつかの簡単な例を以下に示します-
#!/usr/bin/tclsh
puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
43.500000
4.350000e+01
4 tuts
Tcl Language
28
スキャンコマンド
スキャンコマンドは、書式指定子に基づいて文字列を解析するために使用されます。 以下に例を示します。
#!/usr/bin/tclsh
puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]
上記のコードをコンパイルして実行すると、次の結果が生成されます-
1
1
0
1