Tcl-tk-tcl-strings

提供:Dev Guides
移動先:案内検索

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
  • compare *string1 string2

string1とstring2を辞書順に比較します。 等しい場合は0、string1がstring2の前にある場合は-1、そうでない場合は1を返します。

2
  • first *string1 string2

string2でstring1が最初に出現するインデックスを返します。 見つからない場合、-1を返します。

3
  • index *string index

インデックスにある文字を返します。

4
  • last *string1 string2

string2でstring1が最後に出現したインデックスを返します。 見つからない場合、-1を返します。

5
  • length *string

文字列の長さを返します。

6
  • match pattern *string

文字列がパターンに一致する場合、1を返します。

7
  • range *string index1 index2

index1からindex2までの文字列の文字の範囲を返します。

8
  • tolower *string

小文字の文字列を返します。

9
  • toupper *string

大文字の文字列を返します。

10
  • trim *string ?trimcharacters?

文字列の両端のトリム文字を削除します。 デフォルトのトリム文字は空白です。

11
  • trimleft *string ?trimcharacters?

文字列の左端のトリム文字を削除します。 デフォルトのトリム文字は空白です。

12
  • trimright *string ?trimcharacters?

文字列の左端のトリム文字を削除します。 デフォルトのトリム文字は空白です。

13
  • wordend *findstring index

indexの文字を含む単語の後の文字のfindstringのインデックスを返します。

14
  • wordstart* findstring index

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