文字列内の文字「+」をユニコードに置き換える方法は?
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');