3

すべてのドットとスペースを置き換えようとしています"

var name = "C. S. Lewis"

そしてそれらを_

そしてそれをに変換します"C_S_LEWIS"

これは私が試したものですが、すべてをアンダースコアに変換します ( _)

var mystring = "C. S. Lewis";
var find = ".";
var regex = new RegExp(find, "g");
alert(mystring.replace(regex, "_"));
4

2 に答える 2

5

これは、ドットを正規表現でエスケープする必要があるためです(文字クラスの一部でない限り)。この式は機能するはずです:

var regex = /[.\s]+/g;

alert(mystring.replace(regex, '_'))

これは、少なくとも1つのピリオドまたはスペースのシーケンスと一致し、その後の.replace()呼び出しで1つのアンダースコアに置き換えられます。

ところで、これは新しい文字列をに保存しませんmystring。そのためには、置換操作の結果を同じ変数に割り当てる必要があります。

mystring = mystring.replace(regex, '_')
于 2013-02-07T14:25:34.103 に答える
0

.「任意の文字」を意味します。リテラル ドットを取得するために使用します。これは、リテラル アンダースコアの後にリテラル ドットを取得するために、文字列に配置する必要が\.あることを意味します。しかし、最初に文字列を作成する理由がわかりません-これを行うことができます:regex\\.

var find = /\./g;

もちろん、それはあなたが探しているものではありません - ドットだけではなく、ドットとそれに続くスペースだけが必要です。それは違う:

var find = /\.\s+/g;
于 2013-02-07T14:30:06.043 に答える