2

文字列内の文字「+」をユニコードに置き換える方法は?

E.G.
  Before replace -> "table+end"
  After replace -> "table002Bend"

使ってみた

  tableName.replace(/+/g,"002B);

しかし、JS を実行しているブラウザは次のようなエラーをスローしています。

無効な識別子

4

3 に答える 3

3

+正規表現で使用する場合は、エスケープする必要があります。このようにしてみてください:

tableName.replace(/\+/g,"002B")

エスケープされていないプラス記号は、1 つ以上の一致量指定子です。

この単純な置換には正規表現も必要ないことに注意してください。

于 2012-10-26T12:46:59.453 に答える
2

2つのこと:+文字は正規表現で特別な意味を持っています。エラーを見ると次のようになります。

SyntaxError:無効な正規表現:/ + /:繰り返すものがありません

+これは事実上、次のことを意味していることがわかります。式の前の「部分」を繰り返します+バックスラッシュを使用して、リテラルchar(/\+/)を置き換えることを指定するか、すべての特殊文字をエスケープする必要がない文字クラスを作成できます/[+]/

その後も、文字列区切り文字がないためにエラーが表示される場合があります。

tableName.replace(/+/g,"002B);//<--missing closing "

全体として、これらのいずれかがトリックを実行する必要があります。

tableName.replace(/\+/g,"002B");
tableName.replace(/[+]/g,"002B");

ただし、文字列を「urlエンコード」したい場合は、単に使用してみませんencodeURI(tableName)か?

于 2012-10-26T12:51:08.703 に答える
1

正規表現を使用すると、+は正規表現で特別な意味を持ち、エスケープする必要があります。

tableName = tableName.replace(/\+/g, '002B');

単一+の を置き換えるだけの場合、正規表現は必要ありません。

tableName = tableName.replace('+', '002B');

+ただし、これに関する注意点は、最初に遭遇したもののみを置き換えることです。「迅速な」全置換を行うための回避策は、split()andを結合することjoin()です:

tableName = tableName.split('+').join('002B');
于 2012-10-26T12:48:43.133 に答える