replace【置換 (正規表現可・関数指定可)】メソッド
split【分割 (正規表現可)】メソッド
trim【両端の空白削除】メソッド

String.prototype.replace【置換 (正規表現可・関数指定可)】

メモ

  • 文字列の置換 (元の文字列は変更なし)
  • 正規表現も可
  • 全て置換する場合は、正規表現の'g'(グローバル検索) フラグを使用
  • 置換用関数の指定も可
  • 内部からRegExp[ @@replace ] 【置換 (関数指定可)】 を呼び出し

構文

replace ( searchValue, replaceValue )

  • searchValue:文字列 または RegExp 【正規表現】オブジェクト (正規表現リテラル)
    searchValue'g'(グローバル検索) フラグ処理
    RegExp オブジェクト以外文字列変換し、初めに一致した文字列のみ置換
    RegExp オブジェクトfalse初めにマッチした文字列のみ置換
    true全てのマッチした文字列を置換
  • replaceValue (文字列):置換文字列 (以下の置換パターンも利用可能)
    置換パターン説明
    $$'$' 文字
    $&マッチした部分文字列
    $`マッチした部分文字列の直前の文字列
    $'マッチした部分文字列の直後の文字列
    $n括弧で囲まれた n (1~9)番目のマッチ部分
    $nn括弧で囲まれた nn (01~99)番目のマッチ部分
  • replaceValue (関数):置換用関数 ('g'【グローバル検索】フラグ使用の場合、一致回数分呼び出し)
    引数名 (例)説明
    matchマッチした部分文字列
    p1~括弧で囲まれたマッチ部分 (マッチ数分)
    offsetマッチ部分のオフセット
    string置換元の全体文字列
    戻り値型説明
    文字列置換後の文字列

  • 置換後の文字列

var str = "あい123あい123あい123";
console.log(str.replace("あい", "【置換】"));   // 出力:【置換】123あい123あい123
console.log(str.replace(/あい/, "【置換】"));   // 出力:【置換】123あい123あい123
console.log(str.replace(/あい/g, "【置換】"));  // 出力:【置換】123【置換】123【置換】123 (全て置換)
console.log(str.replace(123, "【置換】"));      // 出力:あい【置換】あい123あい123 (数字を文字列に変換後、置換)

str = "あいabcあいABCあいaBc";
console.log(str.replace(/abc/gi, "【置換】"));
// 出力:あい【置換】あい【置換】あい【置換】(大文字・小文字の区別なく全て置換)

str = "@あいう@かきく@"
console.log(str.replace(/@/g, "【置換:$$】"));
// 出力:【置換:$】あいう【置換:$】かきく【置換:$】
console.log(str.replace(/[ぁ-ん]+/g, "【マッチ部分:$&】"));
// 出力:@【マッチ部分:あいう】@【マッチ部分:かきく】@
console.log(str.replace(/@/g, "【前:$`】"));
// 出力:【前:】あいう【前:@あいう】かきく【前:@あいう@かきく】
console.log(str.replace(/@/g, "【後:$'】"));
// 出力:【後:あいう@かきく@】あいう【後:かきく@】かきく【後:】
console.log(str.replace(/([ぁ-ん])([ぁ-ん])([ぁ-ん])/g, "【入れ替え:$3$2$1】"));  // ひらがなの順番を入れ替え
// 出力:@【入れ替え:ういあ】@【入れ替え:くきか】@

str = "あいうabc-123かきくdef-456"
console.log(str.replace(/([a-z]+)-(\d+)/g, "【入れ替え:$02-$01】")); // アルファベット と 数値 を入れ替え
// 出力:あいう【入れ替え:123-abc】かきく【入れ替え:456-def】
/**
 * 置換用関数
 * @param  {string} match  マッチした部分文字列
 * @param  {string} p1     マッチ部分1
 * @param  {string} p2     マッチ部分2
 * @param  {number} offset マッチ部分のオフセット
 * @param  {string} string 置換前の全体文字列
 * @return {string}        置換後の文字列
 */
function funcReplace(match, p1, p2, offset, string) {
  console.log("funcReplace:", match, p1, p2, offset, string);
  var n1 = parseInt(p1, 10);
  var n2 = parseInt(p2, 10);
  var str = n1 + " たす " + n2 + " は " + (n1 + n2) + "\n";
  return str;
}

var str = "1+2=ans;12+34=ans;123+456=ans;";
console.log(str.replace(/(\d+)\+(\d+)=ans;/g, funcReplace));
// 出力:funcReplace: 1+2=ans; 1 2 0 1+2=ans;12+34=ans;123+456=ans;
// 出力:funcReplace: 12+34=ans; 12 34 8 1+2=ans;12+34=ans;123+456=ans;
// 出力:funcReplace: 123+456=ans; 123 456 18 1+2=ans;12+34=ans;123+456=ans;
// 出力:1 たす 2 は 3
// 出力:12 たす 34 は 46
// 出力:123 たす 456 は 579
console.log(str);
// 出力:1+2=ans;12+34=ans;123+456=ans;

String.prototype.split【分割 (正規表現可)】

メモ

  • 文字列を指定セパレータ(正規表現可)で分割 (元の文字列は変更なし)
  • 内部からRegExp[ @@split ] 【分割】を呼び出し

構文

split ( [separator [, limit]] )

  • 部分文字列の配列 (this が空文字列の場合、1つの空文字列を含んだ配列)

var str = ",あ,いう,,えお,";
console.log(str.split(",", 4));   // 出力:["", "あ", "いう", ""]
console.log(str.split(",", 999)); // 出力:["", "あ", "いう", "", "えお", ""]
console.log(str.split(","));      // 出力:["", "あ", "いう", "", "えお", ""]
console.log(str.split(",", 0));   // 出力:[]
console.log(str.split(""));       // 出力:[",", "あ", ",", "い", "う", ",", ",", "え", "お", ","]
console.log(str.split());         // 出力:[",あ,いう,,えお,"]

str = "";
console.log(str.split(","));      // 出力:[""]

str = "ab";
console.log(str.split(/a*?/));    // 出力:["a", "b"]
console.log(str.split(/a*/));     // 出力:["", "b"]

str = "1あ20い3う40え5お60";
console.log(str.split(/\d+/));    // 出力:["", "あ", "い", "う", "え", "お", ""]
console.log(str.split(/(\d+)/));  // 出力:["", "1", "あ", "20", "い", "3", "う", "40", "え", "5", "お", "60", ""]

String.prototype.trim【両端の空白削除】

メモ

  • 両端の空白 (ホワイトスペース)を削除 (元の文字列は変更なし)
  • 拡張:
    • trimLeft【左端の空白削除】
    • trimRight【右端の空白削除】

構文

trim ()

  • なし

  • 両端の空白を削除後の文字列

var str = " \n\t\r\f あ い う え お \n\t\r\f ";
console.log("[" + str.trim() + "]");  // 出力:[あ い う え お]
console.log(str.length);              // 出力:21 (元のまま)

関連