目次

オブジェクトなJavaScriptの基礎講座

String(文字列)オブジェクト

◆ 概説

文字列の扱いに関して、JavaScriptでは、文字列型とStringオブジェクトあり、文字列型は、変数に文字列を代入すると自動的にStringオブジェクトのようになります。

一方、Stringオブジェクトは、他のオブジェクトと同様に new演算子でコンストラクトをします。

文字列型とStringオブジェクトの違いついては、補足を参照のこと。

とにかく、文字列型は、オブジェクトではないのですが、あたかもStringオブジェクトのように扱えます。

Stringオブジェクトのメソッドとプロパティは、以下の通りです。尚、文字列型でも以下のメソッドとプロパティは、利用できます

文字列オブジェクトのメソッド

  anchor       : アンカーを設定する
  big          : 文字を大きくする
  blink        : 文字を点滅させる
  bold         : 太文字にする
  charAt       : 文字を抜き出す
  fixed        : 等幅文字にする
  fontcolor    : フォントカラーを指定する
  fontsize     : フォントサイズを指定する
  indexOf      : 文字を検索する
  italics      : 斜体文字にする
  lastIndexOf  : 文字列の後ろから検索する
  link         : リンクを作成する
  small        : 文字を小さくする
  split        : 指定したパターンの部分で文字列を分ける
  strike       : 削除文字にする
  sub          : 下付文字にする
  substring    : 文字列の途中を抜き出す
  sup          : 上付文字にする
  toLowerCase  : 大文字を小文字にする
  toString     : オブジェクトを文字列に変える 
  toUpperCase  : 小文字を大文字にする
  eval()       : 文字列を数値に変える 
  valueOf      : オブジェクトの値を返す 
  substr       : 文字を抜き出す(n番からm個の文字)
  match        : 指定したパターンと同じパターンを見つける
  replace      : 指定したパターンを置き換える

文字列オブジェクトのプロパティ

  length       : 文字列の長さを習得

例、テキストボックスに入力した数値を、テキストエリアに10進、2進、16進で表示する。

------------------------------------------------- Script ------------
<p>
<script type="text/javascript">
     function dsp(){
        var x = eval(document.TestForm.box.value);

        document.TestForm.Result.value = "";
        document.TestForm.Result.value = "10進:" + x.toString() + "\n"
                                       + "2進 :" + x.toString(2) + "\n"
                                       + "16進:" + x.toString(16);
     }     
</script>
</p>
<form name="TestForm">
<p>
数値:<INPUT TYPE="text" NAME="box" SIZE=10>
<INPUT TYPE="button" VALUE="Stringオブジェクトのテスト" onClick="dsp()">
</p>
</form>
------------------------------------------------- Script ------------

例の処理結果

数値:

◆ 補足

文字列とStringオブジェクトの違い

以下のように明らかに文字列とStringオブジェクトは違います。

尚、以下のロジックは、WEB相談室でお馴染みの weenさんのご指摘を参考にさせていただきました。いつもありがとうございます。

<script type="text/javascript">
// 文字列
var a = 'あいうえお';
a.lang = '日本語';
document.write( 'a=' + a + '<br />' );
document.write( 'a.length=' + a.length + '<br />' );
document.write( 'a.lang=' + a.lang + '<br />' );
document.write( 'typeof(a)=' + typeof(a) + '<br />' );
// String オブジェクト
var A = new String('あいうえお');
A.lang = '日本語';
document.write( 'A=' + A + '<br />' );
document.write( 'A.length=' + A.length + '<br />' );
document.write( 'A.lang=' + A.lang + '<br />' );
document.write( 'typeof(A)=' + typeof(A) + '<br />' );
</script>
処理結果
a=あいうえお
a.length=5
a.lang=undefined
typeof(a)=string
A=あいうえお
A.length=5
A.lang=日本語
typeof(A)=object

実は、文字列には、対応するStringオブジェクトクラス(ラッパーオブジェクト)が用意されていて、コンテキストにより、文字列で扱えたり、Stringオブジェクトで扱えたりします。これは、逆も言えて、Stringオブジェクトが、コンテキストにより、文字列で扱えたり、Stringオブジェクトで扱えたりします。

尚、数値と論理値も同様にNumberオブジェクト、Booleanオブジェクトにも上記の関係は適用されます。

詳しくは以下の本で調べてみてください。

目次