関数索引
jstr() 関数は、任意の文字列を JavaScript または Json の文法に沿った文字列に変換します。この関数を使えば、任意の文字列を安全に javascript や json などに組み込むことができるようになります。
JavaScript / Json の文字列に変換したい文字列を与えます。
変換方法についてのオプションを指定します。オプションは省略可能です。その場合 "" が指定されたものとなり s d u j のいずれも指定されていない動作となります。
| 指定文字 | 意味 | 備考 |
|---|---|---|
| s | 結果の文字列全体をシングルクオートで囲みます。 | abc は 'abc' になります。 j オプションとは併用できません。 |
| d | 結果の文字列全体をダブルクオートで囲みます。 | abc は "abc" になります。 |
| u | 0xff を超える文字を unicode escape します。 | 例えば、文字の値が 0x1234 の場合 \u1234 として結果の文字列に組み込まれます。 | j | 結果の文字列は javascript の文字列としてだけでなく Json の文字列としても使用できるものになります。 | s オプションとは併用できません。 このオプションは WebRelease 2.80M で導入されました。このオプションを指定するためには、テンプレートまたはコンポーネントの WTL が 2.80M 以降に指定されている必要があります。2.80L 以前の WebRelease にはこのオプションは存在せず、指定することはできません。 |
j オプションが指定されていない場合は、与えられた文字列中の文字は以下のルールに従って変換されます。
| 文字コード | 通称 | 変換結果 |
|---|---|---|
| \x08 | バックスペース | \b |
| \x09 | タブ | \t |
| \x0a | 改行 | \n |
| \x0b | 垂直タブ | \v |
| \x0c | 改ページ | \f |
| \x0d | 復帰 | \r |
| \x00 - \x20 | 上記以外の制御文字 | \xhh (hh は文字コードの 16進表現) |
| \x22 | " (ダブルクオート) | \" |
| \x27 | ' (シングルクオート) | \' |
| \x5c | \ (バックスラッシュ) | \\ |
| \xff 以上の文字 | u オプションが on の場合のみ変換対象 \uhhhh (hhhh は文字コードの 16進表現) | |
| それ以外の文字 | 無変換でそのまま結果文字列に組み込まれる |
j オプションが指定されている場合は、与えられた文字列中の文字は以下のルールに従って変換されます。変換結果の文字列は json の文字列として使用可能です。
| 文字コード | 通称 | 変換結果 |
|---|---|---|
| \x08 | バックスペース | \b |
| \x09 | タブ | \t |
| \x0a | 改行 | \n |
| \x0c | 改ページ | \f |
| \x0d | 復帰 | \r |
| \x00 - \x20 | 上記以外の制御文字 | \uhhhh (hhhh は文字コードの 16進表現) |
| \x22 | " (ダブルクオート) | \" |
| \x5c | \ (バックスラッシュ) | \\ |
| \xff 以上の文字 | u オプションが on の場合のみ変換対象 \uhhhh (hhhh は文字コードの 16進表現) | |
| それ以外の文字 | 無変換でそのまま結果文字列に組み込まれる |
文字列「abcあいうえお"'\xyz」を jstr() 関数で JavaScript の文字列に変換してみます。オプションに d を指定していますので、結果の文字列全体が " (ダブルクオート) で囲まれた状態で生成されます。
<script>
var str = %jstr("abcあいうえお\"'\xyz", "d")% ;
confirm(str) ;
</script>
実行結果は下記の通りとなります。
<script>
var str = "abcあいうえお\"\'\\xyz" ;
confirm(str) ;
</script>
文字列「abcあいうえお"'\xyz」を jstr() 関数で JavaScript の文字列に変換してみます。オプションに s を指定していますので、結果の文字列全体が ' (シングルクオート) で囲まれた状態で生成されます。
<script>
var str = %jstr("abcあいうえお\"'\xyz", "s")% ;
confirm(str) ;
</script
実行結果は下記の通りとなります。
<script>
var str = 'abcあいうえお\"\'\\xyz' ;
confirm(str) ;
</script>
文字列 abcあいうえお"'\xyz を jstr() 関数で JavaScript の文字列に変換してみます。オプションに u を指定していますので、文字列中の日本語部分「あいうえお」の部分が \u エスケープされます。オプションに d も指定していますので、結果の文字列全体が " (ダブルクオート) で囲まれた状態で生成されます。
<script>
var str = %jstr("abcあいうえお\"'\xyz", "ud")% ;
confirm(str) ;
</script>
実行結果は下記の通りとなります。
<pre>
<script>
var str = "abc\u3042\u3044\u3046\u3048\u304a\"\'\\xyz" ;
confirm(str) ;
</script>
</pre>
文字列 "あいうえお'ABC" を jstr() 関数で json の文字列に変換してみます。
{"a":%jstr("あい\うえお'ABC", "jd")%}
実行結果は下記の通りとなります。
{"a":"あい\\うえお'ABC"}
j オプションを指定すると single quote は backspash でエスケープされなくなります。j オプションを指定して json 文字列を生成する場合には、普通は u オプションは必要ありません。