文字列内の文字「+」をユニコードに置き換える方法は?
E.G.
Before replace -> "table+end"
After replace -> "table002Bend"
使ってみた
tableName.replace(/+/g,"002B);
しかし、JS を実行しているブラウザは次のようなエラーをスローしています。
無効な識別子
文字列内の文字「+」をユニコードに置き換える方法は?
E.G.
Before replace -> "table+end"
After replace -> "table002Bend"
使ってみた
tableName.replace(/+/g,"002B);
しかし、JS を実行しているブラウザは次のようなエラーをスローしています。
無効な識別子
+
正規表現で使用する場合は、エスケープする必要があります。このようにしてみてください:
tableName.replace(/\+/g,"002B")
エスケープされていないプラス記号は、1 つ以上の一致量指定子です。
この単純な置換には正規表現も必要ないことに注意してください。
2つのこと:+
文字は正規表現で特別な意味を持っています。エラーを見ると次のようになります。
SyntaxError:無効な正規表現:/ + /:繰り返すものがありません
+
これは事実上、次のことを意味していることがわかります。式の前の「部分」を繰り返します。+
バックスラッシュを使用して、リテラルchar(/\+/
)を置き換えることを指定するか、すべての特殊文字をエスケープする必要がない文字クラスを作成できます/[+]/
。
その後も、文字列区切り文字がないためにエラーが表示される場合があります。
tableName.replace(/+/g,"002B);//<--missing closing "
全体として、これらのいずれかがトリックを実行する必要があります。
tableName.replace(/\+/g,"002B");
tableName.replace(/[+]/g,"002B");
ただし、文字列を「urlエンコード」したい場合は、単に使用してみませんencodeURI(tableName)
か?
正規表現を使用すると、+
は正規表現で特別な意味を持ち、エスケープする必要があります。
tableName = tableName.replace(/\+/g, '002B');
単一+
の を置き換えるだけの場合、正規表現は必要ありません。
tableName = tableName.replace('+', '002B');
+
ただし、これに関する注意点は、最初に遭遇したもののみを置き換えることです。「迅速な」全置換を行うための回避策は、split()
andを結合することjoin()
です:
tableName = tableName.split('+').join('002B');