この質問に適切なタイトルを付けるのに少し苦労しました。以下は、私が欲しいものの例です。
var originalString ="hello all, This is a hello string written by hello";
var substringToBeCounted = "hello";
var expectedString ="1 hello all, This is a 2 hello string written by 3 hello; .
文字列全体に「hello」のインスタンス数を追加しようとしています。
これは私がこれまでに得た実用的なソリューションです:
var hitCount = 1;
var magicString = "ThisStringWillNeverBePresentInOriginalString";
while(originalString .match(substringToBeCounted ).length >0){
originalString = originalString .replace(substringToBeCounted , hitCount + magicString );
hitCount++;
}
var re = new RegExp(magicString,'gi');
originalString = originalString.replace(re, subStringToBeCounted);
上記のコードを説明するには: match が元の文字列で "hello" を見つけるまでループし、ループ内で hello を必要な数の奇妙な文字列に変更しています。
最後に、奇妙な文字列を hello に戻しています。
この解決策は私にとって非常にハックに見えます。
この問題に対処する賢い解決策はありますか。
ありがとう