私のコードは:
var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p";
var patt=/myfile.[\W|\w]*.mp3\s/;
var s=patt.exec(st);
var s2=s.slice(3,4);
alert(s2);
しかし、slice()は私に何も与えず、substr()メソッドは私にエラーを与えます:
Object doesn't support this method
なんで?
私のコードは:
var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p";
var patt=/myfile.[\W|\w]*.mp3\s/;
var s=patt.exec(st);
var s2=s.slice(3,4);
alert(s2);
しかし、slice()は私に何も与えず、substr()メソッドは私にエラーを与えます:
Object doesn't support this method
なんで?
ファブリシオは正しい。変数s
はRegExpオブジェクトです。サブストリングにアクセスするには、次のことを行う必要があります。
var s2 = s[0].substr(3,4);
slice
:slice()メソッドは、配列内の選択された要素を新しい配列オブジェクトとして返します。
substring
:substring()メソッドは、指定された2つのインデックスの間の文字列から文字を抽出し、新しいサブ文字列を返します。
var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p";
var patt=/myfile.[\W|\w]*.mp3\s/;
var s=patt.exec(st);
s
これで、以下を含む配列になります。["myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 "]
var s2=s.slice(3,4);
要素3
が存在しないため、を返しますnull
。
それについてsubstring
は配列では使用できません:)したがって、uは次のようなことを行う必要があります:
var s2=s[0].substring(3,4);