2

エスケープにバックスラッシュを使用する文字列フォーマッタをjavascriptで作成しています。フォーマッター自体の作成は非常に簡単です。私の問題は、エスケープ文字を見つけて、フォーマッタでエスケープを実行することです。

このフォーマッターは、.Netフォーマットの実装をJavascriptにコピーします。これらのメモに基づく:http://msdn.microsoft.com/en-us/library/26etazsy

例えば:

"####\\###".format(123456) == "123#456";

JSでは正規表現の否定がサポートされていないため、正規表現には問題があります。

私が見つけたのは、エスケープを説明するために、時には他のループ内で、いくつかのループを実行しなければならないということです。私はそれを機能させていますが、確立されたパターンに基づいて、よりエレガントなものを探しています。

そうするための確立されたパターンはありますか?

4

1 に答える 1

0

これを行う組み込みの方法は、replaceValue コールバックを使用することです。

function replacer(match, offset, fullstring)
  {
  return match.substr(-1);
  }

function mapper(match, offset, fullstring)
  {
  return offset;
  }

"####\\##\\#".replace(/#(?=#|$)/g, mapper).replace(/\\./g, replacer); //012#5#8
于 2013-11-27T02:11:24.687 に答える