Difference between revisions of "Category:LSL String/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (categorized category)
(Redirected page to Category:LSL 文字列)
Line 1: Line 1:
{{LSL Header/ja|ml=*}}{{LSLC/ja|}}{{LSLC/ja|Types}}
#Redirect [[:Category:LSL 文字列]]
<div style="float:right">__TOC__</div>
stringはテキストデータです。stringの長さは、有効な[[script memory/ja|スクリプト容量]]の限界までです。 Stringの値はLSLテキストを定義するときに、ダブルクォーテーション(" ")て囲まれます。いくつかの文字はエスケープされる必要があるだろうけれど、stringで用いることができるでしょう。
 
stringは'''+'''演算子を用いて結合させることができます。
 
<div style="float:left">
{|{{Prettytable}}
|+'''エスケープコード'''
|-{{Hl2}}
!部分文字
!置換されるもの
|-
|| \t || 4スペース
|-
|| \n || 改行
|-
|| \" || ダブルクオーテーション
|-
|| \\ || バックスラッシュ
|}
</div>
{|
|
String 例:
<pre>"Hello Avatar!"
"Yes"
"No"
"It's 10 o'clock."
"I am 21 years old!"
"Help " + "me"
EOF
//以下の2つのstringは同じ値です。
"I scream,\nyou scream,\nwe all scream,\nfor ice-cream!"
"I scream,
you scream,
we all scream,
for ice-cream!"
</pre>
|}
 
Note: エスケープコード(上記一覧)はスクリプトがコンパイルされるときに翻訳され、動いてる間はされません。
stringはコンパイルされたとき、結果としてスクリプト内部の\nを"改行"文字に変換するでしょう。ノートカード、チャット、httpその他から読み込むテキストはエスケープコードではチェックされませんから、ノートカードでの\n入力は自動で"改行"文字には変換されません。自らしなければなりませんが、本当に本当に必要な場合だけにすべきです。
 
Note: CとJavaや同様な言語からLSLに入った人は、始めたばかりの間はLSL stringのエスケープルールで混乱するでしょう。 LSLの"\n"の意味はllUnescapeURL("%0A")で、CとJavaに似てますが、"\t"の意味はllUnescapeURL("%09")よりllUnescapeURL("%20%20%20%20") が最適で、"\r"の意味はllUnescapeURL("%0D")よりも"r"が最適、などなど。
 
{{#vardefine:p_name_desc|変数名
}}{{#vardefine:p_value_desc|string 要素もしくは定型値
}}{{#vardefine:p_value_t_desc|要素もしくは定型値
}}
<div id="box">
== 変数: string {{LSL Param|name}}; ==
<div style="padding: 0.5em;">
<pre>string name;</pre>
宣言するstring型の変数を'''name'''と名づけて、{{HoverText|""|空の string}}にします。
{|
{{LSL DefineRow|variable|name|{{#var:p_name_desc}}}}
|}
</div></div>
 
<div id="box">
== 変数: string {{LSL Param|name}} {{=}} {{LSL Param|value}}; ==
<div style="padding: 0.5em;">
<pre>string name = value;</pre>
宣言するstring型の変数を'''name'''と名づけて、'''value'''の値をいれます。
{|
{{LSL DefineRow|variable|name|{{#var:p_name_desc}}}}
{{LSL DefineRow|expression|value|{{#var:p_value_desc}}}}
|}
</div></div>
 
<div id="box">
== [[Typecast/ja|型の変換]]: (string){{LSL Param|value_t|value}} ==
<div style="padding: 0.5em;">
<pre>(string)value</pre>
'''value'''をstring型の値に変換します。
{|
{{LSL DefineRow|expression|value|{{#var:p_value_t_desc}}}}
|}
</div></div>
 
<div id="box">
 
== [[LSL Operators/ja|演算子]] ==
<div style="padding: 0.5em;">
ほかの情報は[[LSL Operators/ja|演算子]] を参照します。
<div id="box" style="padding-left: 0.5em;padding-right: 0.5em;padding-bottom: 0.5em;">
=== 結合: {{LSL Param|value|value1}} + {{LSL Param|value|value2}} ===
<pre>(value1 + value2)</pre>
入力での編集以外で、2つのstringを1つのstringに結合します。'''value2'''に '''value1'''を加えて、結果のstringに返します。
{|
{{LSL DefineRow|expression|value1|{{#var:p_value_desc}}}}
{{LSL DefineRow|expression|value2|{{#var:p_value_desc}}}}
|}
</div>
<div id="box" style="padding-left: 0.5em;padding-right: 0.5em;padding-bottom: 0.5em;">
 
=== 比較: {{LSL Param|value|value1}} <nowiki>==</nowiki> {{LSL Param|value|value2}} ===
<pre>(value1 == value2)</pre>
2つのstringを比較して、同じ長さで同じ文字なら1を返し、そうでなければ0を返します。
この演算子はCの<code>!strcmp('''value1''', '''value2''')</code>と極めて似たような働きをし、従ってCやJavaでの == 演算子と直観的に異なる故に、技術的に異なるものです。
{|
{{LSL DefineRow|expression|value1|{{#var:p_value_desc}}}}
{{LSL DefineRow|expression|value2|{{#var:p_value_desc}}}}
|}
</div>
<div id="box" style="padding-left: 0.5em;padding-right: 0.5em;padding-bottom: 0.5em;">
=== 比較: {{LSL Param|value|value1}} != {{LSL Param|value|value2}} ===
<pre>(value1 != value2)</pre>
2つのstringを比較し、同じ長さで同じ文字であれば{{HoverText|zero|0}}を返し、そうでなければ0ではないものを返します。
この演算子はCの<code>strcmp('''value1''', '''value2''')</code>と極めて似た働きをし、従ってCやJavaでの != 演算子と直観的に異なる故に、技術的に異なるものです。
{|
{{LSL DefineRow|expression|value1|{{#var:p_value_desc}}}}
{{LSL DefineRow|expression|value2|{{#var:p_value_desc}}}}
|}
</div>
</div></div>
 
<div id="box">
 
== 例 ==
<div style="padding: 0.5em;">
<pre>
integer int = 48934;
string str = (string)int;
string str_2;
str_2 = str;
</pre>
</div></div>
<div id="box">
== よく用いる関数 ==
<div style="padding: 0.5em;">
=== [[Library_Combined_Library|CombinedLibrary]]のString関数 ===
{|
{{LSL DefineRow||[[Library_Combined_Library#str_replace|str_replace]]|全ての対象string内の、stringインスタンスとその他のstringを置換します。}}
{{LSL DefineRow||[[Library_Combined_Library#Trim|TrimRight]]|stringの右端から文字の余計な空白を削除します。}}
{{LSL DefineRow||[[Library_Combined_Library#Trim|TrimLeft]]|stringの左端から文字の余計な空白を削除します。}}
{{LSL DefineRow||[[Library_Combined_Library#Trim|TrimBoth]]|stringの両端から文字の余計な空白を削除します。}}
|}
=== 例 ===
{|
{{LSL DefineRow||[[Examples|SplitLine]]|'改行'エスケープコードをstringの特定の箇所に挿入します。}}
|}
</div></div>

Revision as of 23:39, 14 April 2010