- 2008-05-23 (金)
- tutorial/data
fromhttp://nodebox.net/code/index.php/Strings
適当な日本語訳
変数はしばし、スクリーンに描画されるかもしれないstrings(文字列)と呼ばれるテキストの断片を保持する。
テキスト片-文字列-が、変数に代入される場合、"クォート"で囲む必要がある。
そうしないと、Nodeboxはテキストをが変数名か何かと考えるかもしれない。
以下の例を考えよ。
hello = 20
str = hello
print str
>>> 20
str = "hello"
print str
>>> hello
文字列はキャラクタのリストである
文字列は個別の文字、記号のlistのようである。
この方法で、あなたは他のさまざまなリストのように文字列の各キャラクタにアクセスが出来た。
以下の例で、choice()コマンドによってchars stringからランダムな文字列を選択し、Joshua Davis-styleで描画するという、便利な使い方をします。
画像の為、略。
Manipulating strings
Stringsにはとても有用なメソッドが多くある。
- string.upper(): 文字列を大文字で返す。
- string.lower(): 文字列を小文字で返す。
- string.capitalize: 最初の文字を大文字にして文字列を返す。
- string.find(text, start=0): 文字列のtextのインデックスポジションを返す。
- string.replace(old, new): 文字列中全てのold textをnew textに置き換える。
- string.split(): 文字列をwordのリストとして返す。
- string.join(list): wordリストを結合する。
文字列はupper() and lower()メソッドで大文字、小文字に変換できる。
captalizeで最初の一文字を大文字に出来る。
これらはメソッドであり、str = upper(str)とする代りに、str = str.upper()とする必要があることを覚えておくこと。
str = "Kumquats, Kumquats! I must have my Kumquats! - Oscar Wilde"
str = str.upper()
print str
>>> KUMQUATS, KUMQUATS! I MUST HAVE MY KUMQUATS! - OSCAR WILDE
replace()メソッドは文字列から間違いをフィルタリングしたい時、コンテンツから一部を変更したい時、大変有効である。
str = "Something's rotten in the state of Denmark."
str = str.replace("in", "in, like, ")
str = str.replace(".", " dude.")
str = str.replace("rotten", "way uncool")
print str
>>> Something's way uncool in, like, the state of Denmark dude.
Quotes in quotes
テキストデータはしばしば自身にクォートを含む。特にテキストがダイアログを含む時に。
NodeBoxが文字列を調査し、クォートに遭遇した時、文字列がここで終ると論理的に仮定するであろう。
次の例は動作しない。
NodeBoxは(On his death bed)をstrに代入する必要があると考え、続くゴミステートメントは理解しない。
str = "(On his death bed): "Those curtains are hideous." - Oscar Wilde"
代りに、文字列は三重クォートで囲む必要がある。
str = """(On his death bed): "Those curtains are hideous." - Oscar Wilde"""
print str
>>> (On his death bed): "Those curtains are hideous." - Oscar Wilde
File input
もし長いパラグラフのテキストを利用するなら、別のテキストファイルに保存し、変数にアサインするのが良いだろう。
(これはスクリプトを綺麗に保つし、スクリプトから分離してテキストを編集することが出来るから)。
(画像略)
単純にテキストエディットでプレーンテキストで作って、スクリプトにopen()コマンドでインポートする。
Unicode characters
Unicodeはコンピュータが世界中のライティングシステムからシンボルを使うためのキャラクタシステムである。
例えばフィンランド語やヘブライ語をスクリプトの出力で用いるなら、Unicodeについて知らなければならないだろう。
最初に、確実なことは、Unicode characterを持っているtypefaceを使うので、テキストはそのフォントを描画することが出来るということである。
通常、Helveticaのような大きなフォントファミリーはほとんどのユニコードキャラクタの為のユニコードを含んでいる。
次に、特殊な記号を含んだテキストのかけらをNodeBoxで呼ぶ。
これは文字列の引用符の前に"u"を付けるだけです。
str = u"?אתה מדבר אנגלית"
text(str, 50, 200)
テキストファイルからimportする場合は2つ注意することがある。
一つはテキストファイルはUnicodeで保存すること。
テキストエディットでは、プレーンテキストを開いて保存するときに、エンコードリストから"Unicode (UTF-8)"を選択する。
それで、そのファイルをNodeBoxにimportする際、テキストをdecodeする。
str = open("hebrew.txt").read()
str = str.decode("utf-8")
align(RIGHT)
text(str, 100, 200)
- Newer: Variables ≫
- Older: