3

基本的に私は次のものを持っています:

  • 入力文字列(例:ABCDEFGHI)
  • 入力テンプレート(例:XXX-XXX-XXX)

そして私が見たい出力はABC-DEF-GHI

私はそれが次のようなものになると想像します"XXX-XXX-XXX".replace("regex", "ABCDEFGHI");

欠点は、テンプレートが動的であるということです。XXX-XXX-XXXまたは、XX-XXXX-XXXまたは任意の特殊文字を含めることができる他の任意の組み合わせである可能性がありますが、一致する文字は常にですX

テンプレートは、特殊文字で区切られたグループの長さや数に制限はありません。つまり、入力文字と同じ数のXがある限り、XX-X-Xとは両方とも有効なテンプレートです。XXX-XXX-XXX-XXX-X

これまでのところ、これがあります。"/^([^a-zA-Z0-9]*X){9}[a-zA-Z0-9]*$/"これにより、テンプレートが検証されます。

誰かがこれに光を当てることができますか?テンプレートの一致した1文字を文字列の1文字に置き換える方法はありますか?

4

1 に答える 1

1

基本的に、単純なテンプレートをREGEXに変換する必要があり、これはREGEXを使用して行うことができます。

I.置換を作成します

II。一致を作成します:(2つのステップ)

  1. 3つのグループを作成します。
  2. X上記の操作で、 'をドットに置き換えます(.単一文字の一致として機能します)

これで、新しい一致文字列(...)(...)(...)と新しい置換文字列\1-\2-\3を入力文字列で使用して、ここでデモを説明ABCDEFGHIできます。ABC-DEF-GHI

注意:テンプレートは、入力文字列を3つの部分に分割し、その間に2つの(可変)特殊文字があると想定しています。

アップデート:

テンプレートに可変パーツがある場合は、事前に一致パターンと置換
パターンを作成する必要があります 。正規表現:を使用してテンプレート内のパーツ\Wカウントし、一致パターンと置換パターンを作成します。

于 2013-03-05T00:50:43.333 に答える