—JavaScript:the good parts 「良いパーツ」によるベストプラクティス [ ダグラス・クロフォード ] ExternalLink P105 ここらから–
sliceメソッドはある文字列の一部をコピーした新しい文字列を生成する。startパラメータが負の値なら、string.lengthの値を加算した値が利用される。endパラーメータは省略可能であり、デフォルト値はstring.lengthである。endパラメータに負の値が指定された場合も、string.lengthの値が加算される。endパラメータの値は、必要な最後の文字の位置よりも1つ大きい位置を指定する。したがって、pの位置からn文字分の文字を取得したい場合は、string.slice(p,p+n)のように指定する。
—JavaScript:the good parts 「良いパーツ」によるベストプラクティス [ ダグラス・クロフォード ] ExternalLink P105 ここまで–
文字列は0番目始まりのようだな。
—JavaScript:the good parts 「良いパーツ」によるベストプラクティス [ ダグラス・クロフォード ] ExternalLink P106 ここらから–
string.substring(start,end)
substringメソッドは、sliceメソッドと同じだが、パラメータに負の値を指定することができない。substringメソッドを使わなければならない理由は1つもない。代わりにsliceメソッドを使えばよいだろう。
—JavaScript:the good parts 「良いパーツ」によるベストプラクティス [ ダグラス・クロフォード ] ExternalLink P106 ここまで–
string.substringメソッドはstring.sliceメソッドと同じみたい。string.sliceメソッドを使えばいいな。
文字列の長さより大きい値や、(-文字列の長さ)より小さい値を指定する場合はエラーが出ないが、これを正常な処理とは言いたくないな。
let text = 'HelloWorld2023';
console.log("text.length = " + text.length);
let a = text.slice(2);
console.log("a.length = " + a.length);
console.log("a = " + a);
let b = text.slice(0, 5);
console.log("b.length = " + b.length);
console.log("b = " + b);
let c = text.slice(-4);
//負の値の場合は、-4+text.length=10
//開始位置は10番目(0始まり)
console.log("c.length = " + c.length);
console.log("c = " + c);
let d = text.slice(100);
//文字列の長さより大きい値を入れると
//長さ0の文字列がコピーされて空文字になる
console.log("d.length = " + d.length);
if(d === ""){
console.log("空文字d = " + d);
}
let e = text.slice(-13);
//負の値の場合は、-13+text.length=1
//開始位置は1番目(文字列は0始まり)
console.log("e.length = " + e.length);
console.log("e = " + e);
let f = text.slice(-14);
//負の値の場合は、-14+text.length=0
//開始位置は0番目(文字列は0始まり)
console.log("f.length = " + f.length);
console.log("f = " + f);
let g = text.slice(-15);
//負の値の場合は、-15+text.length=-1
//マイナスの場合は
//開始位置は0番目(文字列は0始まり)になるみたい
console.log("g.length = " + g.length);
console.log("g = " + g);
let h = text.slice(-15,-100);
//endが負の値の場合、-100+text.length=-85
//このときendが0番目になるみたい
//つまり0番目(start)から0番目(end)で
//長さ0の文字列がコピーされて空文字になる
console.log("h.length = " + h.length);
if(d === ""){
console.log("空文字h = " + h);
}
let i = text.slice(-15,-10);
//endが負の値の場合、-10+text.length=4
//開始位置は0番目(文字列は0始まり)
//終了は(4-1=3)番目(文字列は0始まり)
console.log("i.length = " + i.length);
console.log("i = " + i);
/*
text.length = 14
a.length = 12
a = lloWorld2023
b.length = 5
b = Hello
c.length = 4
c = 2023
d.length = 0
空文字d =
e.length = 13
e = elloWorld2023
f.length = 14
f = HelloWorld2023
g.length = 14
g = HelloWorld2023
h.length = 0
空文字h =
i.length = 4
i = Hell
*/