【JavaScript】文字列内のすべての特殊文字をASCIIコードに置き換える方法
本記事では、JavaScriptで「特殊文字を含む可能性のある文字列」を受け取り、すべての特殊文字を対応するASCIIコード(10進数)に置き換えた新しい文字列を返す関数の実装方法を解説します。
処理の考え方
実装のポイントは以下の通りです。
- 文字列を1文字ずつループで走査します。
- 対象の文字が数字・英字・半角スペースのいずれかであれば、そのまま結果に追加します。
- それ以外の文字(特殊文字)は、
charCodeAt()メソッドを使ってASCIIコード値に変換してから連結します。
サンプルコード
以下が実際のコード例です。
const str = 'Th!s !s @ str!ng th@t cont@!ns some special characters!!';
const specialToASCII = str => {
let res = '';
for(let i = 0; i < str.length; i++){
// 数字・英字・スペースはそのまま残す
if(+str[i] || str[i].toLowerCase() !== str[i].toUpperCase() || str[i] === ' '){
res += str[i];
continue;
};
// それ以外(特殊文字)はASCIIコードに置き換える
res += str[i].charCodeAt(0);
};
return res;
};
console.log(specialToASCII(str));
コードの解説
条件式の+str[i]は、文字を数値化できる(=数字である)場合にtrueになります。また、str[i].toLowerCase() !== str[i].toUpperCase()は、大文字と小文字への変換結果が異なる=アルファベットであることを判定しています。これらの条件と半角スペースのチェックにより、英数字とスペース以外の文字だけがcharCodeAt(0)によってASCIIコードへ変換される仕組みです。
出力結果
上記のコードを実行すると、コンソールには次のような出力が表示されます。
Th33s 33s 64 str33ng th64t cont6433ns some special characters3333
このように、「!」はASCIIコードの33、「@」は64にそれぞれ置き換えられ、英数字とスペースは元のまま保持されていることが確認できます。
-
JavaScriptで文字列内の母音を1始まりのインデックスに置き換える方法
問題 今回は、文字列を受け取り、その中に出現するすべての母音(a・e・i・o・u)を、文字列内での位置(1始まりのインデックス)に置き換えるJavaScript関数を作成します。 例えば、文字列の2番目の文字が母音だった場合、その文字は「2」に置き換えられます。 実装コード 以下が実際のコード例です − const str = cancotainsomevowels; const replaceVowels = (str = ) => { const vowels = aeiou; let res = ; for(let i = 0; i < str.le
-
JavaScriptで文字列内の文字がすべて一意かどうかを判定する方法
問題JavaScriptの関数を作成することを目標とします。この関数は文字列を引数として受け取り、その文字列に含まれるすべての文字が一度だけ出現していれば true を返し、同じ文字が複数回出現していれば false を返します。コード例以下が実際のコードです。const str = thisconaluqe;const allUnique = (str = ) => { for(let i = 0; i < str.length; i++){