JavaScriptで文字列内の空白を「%20」に変換する方法
Web上のURLにスペースが含まれている場合、ブラウザは自動的にすべての半角スペースを「%20」という文字列に置き換えます。
本記事では、文字列を第一引数(唯一の引数)として受け取り、文字列中の空白があった位置をすべて「%20」に置き換えた新しい文字列を生成して返すJavaScript関数を作成します。
問題の例
たとえば、入力文字列が次の場合:
const str = 'some extra Space';
期待される出力は以下のとおりです。
const output = 'some%20extra%20%20Space';
「extra」と「Space」の間には元々2つ連続した空白があるため、出力では「%20%20」となっている点に注目してください。
実装例
この処理を実現するコードは次のとおりです。ループで文字列を1文字ずつ確認し、空白であれば「%20」を、それ以外であれば元の文字をそのまま結果に連結していきます。
const str = 'some extra Space';
const replaceWhitespace = (str = '') => {
let res = '';
const { length } = str;
for(let i = 0; i < length; i++){
const char = str[i];
if(!(char === ' ')){
res += char;
}else{
res += '%20';
};
};
return res;
};
console.log(replaceWhitespace(str));補足:より簡潔な書き方
実際の開発では、正規表現や組み込みメソッドを使うことで、同じ処理をもっと簡潔に記述できます。
// replaceメソッドと正規表現を使う方法(空白のみを対象) const result = str.replace(/ /g, '%20'); // encodeURIComponentを使う方法(空白以外の特殊文字も同時にエンコードされる) const encoded = encodeURIComponent(str);
encodeURIComponentは空白以外の記号も変換してしまうため、「空白だけ」を置換したい場合はreplaceメソッドを使うのが適しています。
実行結果
コンソールには次のように出力されます。
some%20extra%20%20Space
-
JavaScriptで文字列を日付に変換する方法
日付を表すのに最もおすすめの形式は「yyyy-mm-dd」です。これはISO 8601(国際標準規格)に準拠した形式で、国や地域による表記の違いによる混乱がなく、誰にとっても分かりやすいのが特徴です。JavaScriptでは、この形式の文字列からDateオブジェクトへの変換はとても簡単です。文字列をそのままDateコンストラクタに渡すだけで、自動的に解析してくれます。基本的な例let a = 2019-08-10; console.log(new Date(a));出力結果上記のコードを実行すると、次のような出力が得られます。Sat Aug 10 2019 05:30:00 GMT+0530
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>