1

したがって、サブストリングは2つのパラメーターを取ることができます。つまり、開始するインデックスと停止するインデックスです。

   var str="Hello beautiful world!";
   document.write(str.substring(3,7));

ただし、開始点と停止点を取得する文字のセットとして指定する方法はあります。したがって、開始点を3にする代わりに、「lo」にし、終了点を7にする代わりに、 「wo」になるので、「lobeautifulwo」をつかむことになります。その目的を果たすJavascript関数はすでにありますか?

4

5 に答える 5

5

代わりに正規表現とstring.match()を使用したいようです。

var str="Hello beautiful world!";
document.write(str.match(/lo.*wo/)[0]); // document.write("lo beautiful wo");

match()は一致の配列を返すことに注意してください。一致がない場合は、nullになる可能性があります。したがって、nullチェックを含める必要があります。

正規表現に精通していない場合、これはかなり良い情報源です: http ://www.w3schools.com/jsref/jsref_obj_regexp.asp

于 2012-12-15T04:56:01.757 に答える
2

次の方法を使用しますindexOf
document.write(str.substring(3,str.indexOf('wo')+2));

于 2012-12-15T04:52:05.793 に答える
2

うん、正規表現でこれを簡単に行うことができます:

var substr = /lo.+wo/.exec( 'Hello beautiful world!' )[0];
console.log( substr ); //=> 'lo beautiful wo'
于 2012-12-15T04:54:03.037 に答える
0

正規表現はある程度これを達成できるかもしれませんが、あなたが知っておくべき多くの詳細があります。

たとえば、で始まり、最も近い"lo"で終わるすべての部分文字列を検索する場合です。(複数の一致がある場合、後続の一致は最後の一致の後に最初の一致を取得します)。 "wo""lo""lo""wo"

"Hello beautiful world!".match(/lo.*?wo/g);

RegExpコンストラクターを使用すると、より柔軟にすることができます(検索したい実際の文字列に置き換えることができます)"lo""wo"

"Hello beautiful world!".match(new RegExp("lo" + ".*?" + "wo", "g"));

重要: 上記のRegExpアプローチの欠点は、それらをエスケープするためにどの文字が特別であるかを知る必要があることです。そうしないと、検索したい実際のサブストリングと一致しません。


indexOf少し汚れていますが、で達成することもできます。最初の部分文字列の場合:

var startIndex = str.indexOf(startString);
var endIndex =  str.indexOf(endString, startIndex);
if (startIndex >= 0 && endIndex >= 0)
    str.substring(startIndex, endIndex + endString.length)

文字列の最初"lo"から最後までの部分文字列を検索する場合"wo"は、を使用indexOflastIndexOfて検索できます(上記のコードに少し変更を加えます)。RegExpは、上記の2つの例でに変更.*?することによってもそれを行うことができ.*ます(一致するのは最大で1つであるため、最後の「g」フラグは冗長です)。

于 2012-12-15T04:56:32.107 に答える
0

正規表現の兄弟を使用します。

   if (/(lo.+wo)/.test("Hello beautiful world!")) {
    document.write(RegExp.$1);
   }

文字列が一致しない場合に備えて、バックアップ計画が必要です。したがって、テストの使用。

于 2012-12-15T04:57:03.647 に答える