みこむらめもむらむらむら

なんかHTML5とかJS勉強とかやりながらめもを綴るブログ

【JavaScript】基本データを扱うためのオブジェクト①

さ、前のわからなかった私が続きをやりますよ

Stringオブジェクト

文字列型(string)の値を扱うためのラッパーオブジェクトで
文字列の抽出や加工、検索などを行うための機能を提供する

var str = 'こんにちは';

new演算子で明示的に生成することもできるが
通常はリテラル表現を使って上記のような記述をする

ふむふむ

検索

  • indexOf(substr [,start])
    • 文字列前方(start+1文字目)から部分文字列substrを検索
  • lastIndexOf(substr [,start])
    • 文字列後方(start+1文字目)から部分文字列substrを検索
var str1 = 'にわにはにわにわとりがいる';
document.writeln(str1.indexOf('にわ'));  //0(先頭から)
document.writeln(str1.lastIndexOf('にわ'));  //6(末尾から検索)
document.writeln(str1.indexOf('にわ', 3));  //4(4文字目から右方向検索)
document.writeln(str1.lastIndexOf('わ', 5));  //5(6文字目から左方向検索)
document.writeln(str1.indexOf('ガーデン'));  //-1(不一致)

部分文字列

  • charAt(n)
    • n+1番目の文字を抽出
  • slice(start [,end])
    • 文字列からstart+1~end文字目を抽出
  • substring(start [,end])
    • 文字列からstart+1~end文字目を抽出
  • substr(start [,cnt])
    • 文字列のstart+1文字目からcnt文字を抽出
  • split(str [,limit])
    • 文字列を分割文字列strで分割し、その結果を配列として取得(引数limitは最大分割数)
var str1 = 'にわにはにわにわとりがいる';
document.writeln(str1.charAt(11));  //い(12文字目を抽出)
document.writeln(str1.slice(5, 8));  //わにわ(6~8文字目を抽出)
document.writeln(str1.substring(5, 8));  //わにわ(6~8文字目を抽出)
document.writeln(str1.substr(5, 6));  //わにわとりが(6文字目から6文字を抽出)
document.writeln(str1.split('が'));  //にわにはにわにわとり,いる
document.writeln(str1.split('あ'));  //にわにはにわにわとりがいる(対象文字列に含まれない文字列を分割文字列に指定)
document.writeln(str1.split('わ', 3));  //に,にはに,に(3つに分割)
部分文字列を抽出する際の注意
  • substring/sliceメソッド
    • 開始位置~終了位置の範囲で抽出箇所を指定
  • substrメソッド
    • 開始位置からの文字数指定で抽出箇所を指定
substringメソッドとsliceメソッドの違い
  1. 引数start>引数endである場合
var str1 = 'みこむらめもむら';
document.writeln(str1.substring(8, 5));  //もむら(6~8文字目を抽出)
document.writeln(str1.slice(8, 5));  //空文字

substringメソッドは引数startと引数endとの関係を入れ替えて
end+1~start-1文字目までを抽出するのに対し
sliceメソッドはこうした入れ替えは行わず、そのまま空文字を返す
うむ

  1. 引数start/endに負の数を指定した場合

substringメソッドは無条件に0とみなすが
sliceメソッドは「文字列末尾からの文字数」とみなす

var str1 = 'みこむらめもむら';
document.writeln(str1.substring(3, -2));  //みこむ(1~5文字目を抽出)
document.writeln(str1.slice(3, -2));  //らめも(4~6文字目を抽出)

正規表現

  • match(reg)
    • 正規表現regで文字列を検索、合致した部分文字列を取得
  • replace(reg, rep)
    • 正規表現regで文字列を検索、合致した部分を部分文字列repで置換
  • search(reg)
    • 正規表現regで文字列を検索、一致する最初の文字位置を取得

大文字⇔小文字

  • toLowerCase()
    • 小文字に変換
  • toUpperCase()
    • 大文字に変換

コード変換

  • charCodeAt(n)
    • n-1番目の文字をLatin-1コードに変換
  • fromCharCode(c1, c2, ..)
    • Latin-1コードc1、c2..を文字に変換
    • 静的メソッド

文字装飾

  • anchor(name)
    • 文字列をアンカー化
  • link(url)
    • 文字列をリンク化
  • sub()
    • 下付き文字にする
  • sup()
    • 上付き文字にする
var str1 = 'みこむらめもむら';
document.writeln('TOP'.anchor(top));  //<a name="top">TOP</a>
document.writeln(str1.link('http://micomura.hatenablog.jp/'));  //<a href="http://micomura.hatenablog.jp/">みこむらめもむら</a>
document.writeln('10'.sub());  //<sub>10</sub>
document.writeln(str1.sup());  //<sup>みこむらめもむら</sup>

sub/supメソッドとかはあまり使わないとか
基本CSSで指定するからねー

その他

  • concat(str)
    • 文字列の後方に文字列strを連結
  • length
    • 文字列の長さを取得
var str1 = 'みこむらめもむら';
document.writeln(str1.concat('(・∀・)'));  //<a name="top">TOP</a>
document.writeln(str1.length);  //8

正規表現に関しては後述があるそうです、うむ
たくさんあるなー‥次

Numberオブジェクト

数値型(number)の値を扱うためのラッパーオブジェクトで
数値の整形を行うための機能を提供するとともに
無限大/無限小、数値型の最大値/最小値などの特別な値を表すための
読み取り専用プロパティ(定数)を公開している

var num = 123;

Stringオブジェクトと同じように
new演算子で明示的に生成することもできるが
通常はリテラル表現を使って上記のような記述をする

プロパティ

  • MAX_VALUE
    • 利用できる最大値
    • 静的プロパティ
  • MIN_VALUE
    • 利用可能な最小値(0に最も近い値)
    • 静的プロパティ
  • NaN
    • 数値でない(Not a Number)
    • 静的プロパティ
  • NEGATIVE_INFINITY
    • 負の無限大
    • 静的プロパティ
  • POSITIVE_INFINITY
    • 正の無限大
    • 静的プロパティ

POSITIVE_INFINITY/NEGATIVE_INFINITY、NaNは
いずれも特殊な数値(定数)を表す
POSITIVE_INFINITY/NEGATIVE_INFINITY(無限大)は
JavaScriptで表現可能な数値の範囲を超えた場合の
戻り値として利用される
NaN(Not a Number:数値以外)は
たとえば「0を0で除算した」など不正な演算が行われた場合に
数値として表現できない結果を表すために利用される

メソッド

  • toString(rad)
    • rad進数の値に変換(radは2~36)
  • toExponential(dec)
    • 指数形式に変換(decは小数点以下の桁数)
  • toFixed(dec)
    • 小数点第dec位で四捨五入
  • toPrecision(dec)
    • 指定桁数に変換(桁数が不足する場合は0で補う)
var num1 = 255;
document.writeln(num1.toString(16));  //ff
document.writeln(num1.toString(8));  //377

var num2 = 123.45678;
document.writeln(num2.toExponential(2));  //1.23e+2
document.writeln(num2.toFixed(3));  //123.457
document.writeln(num2.toFixed(7));  //123.4567800
document.writeln(num2.toPrecision(10));  //123.4567800
document.writeln(num2.toPrecision(6));  //123.457

toFixedメソッドは小数点以下の桁数
toPrecisionメソッドは整数部の桁数も含めた全桁数
を指定する点に注意

NaNは、自分自身を含むすべての数値と等しくないため
以下のような比較式はfalseを返す

document.write(Number.NaN == Number.NaN)

NaN値を検出するにはisNaN関数を使用する必要がある






うむ、わかった
記事分けるよ