JavaScriptで文字列内の2つの単語の先頭文字を入れ替える方法
問題
今回は、スペースで区切られた2つの単語からなる文字列を引数として受け取るJavaScript関数を作成します。
この関数の目的は、それぞれの単語の先頭文字(1文字目)を互いに入れ替えた新しい文字列を構築し、それを返すことです。
たとえば「hello world」という入力に対しては、先頭の「h」と「w」を交換して「wello horld」を出力する必要があります。
コード例
以下が実際のコードです。
const str = 'hello world';
const interchangeChars = (str = '') => {
const [first, second] = str.split(' ');
const fChar = first[0];
const sChar = second[0];
const newFirst = sChar + first.substring(1);
const newSecond = fChar + second.substring(1);
return newFirst + ' ' + newSecond;
};
console.log(interchangeChars(str));
出力
コンソールには次のように表示されます。
wello horld
コードの解説
処理の流れを順番に見ていきましょう。
str.split(' ')を使って、入力文字列をスペースで分割し、分割代入によってfirstとsecondの2つの変数に各単語を格納します。first[0]とsecond[0]で、それぞれの単語の先頭文字を取り出します。substring(1)を使って、各単語の2文字目以降の部分を取得します。元のコードにあるsubstring(1, first.length)は終了位置を省略した場合と同じ結果になるため、シンプルにsubstring(1)としても動作します。- 相手側の単語の先頭文字を、それぞれの残りの部分の前に連結することで、先頭文字が入れ替えられた新しい単語が完成します。
- 最後に、2つの新しい単語をスペースで連結して返します。
別の書き方:slice() を使う場合
substring() の代わりに slice(1) を使っても同じ結果が得られます。
const interchangeChars = (str = '') => {
const [a, b] = str.split(' ');
return b[0] + a.slice(1) + ' ' + a[0] + b.slice(1);
};
こちらの書き方は処理を1行にまとめられるため、より簡潔です。どちらの方法でも、文字列がイミュータブル(直接変更できない)であるJavaScriptの特性上、元の文字列は変更されず、常に新しい文字列が生成される点にも注目してください。
-
JavaScriptで数値の先頭の桁を交換した後の差の絶対値を求める方法
問題の概要今回は、ちょうど2つの数値を含む配列を受け取るJavaScript関数を作成します。この関数の目的は、2つの数値の先頭の桁(最初の数字)同士を入れ替えた後、その数値の差の絶対値を返すことです。例として、配列 [105, 413] を考えてみましょう。105 の先頭の「1」と、413 の先頭の「4」を入れ替えます。すると、新しい数値はそれぞれ 405 と 113 になります。したがって、求める差は以下のようになります。|405 − 113| = 292解決のアプローチこの問題は、以下の手順で解決できます。各数値を文字列に変換する(String() を使用)。両方の文字列の先頭の1文字を
-
JavaScriptで文字列内の文字を英字・数字・特殊文字に再グループ化する方法
問題文字列 str を第一引数(唯一の引数)として受け取る JavaScript 関数を作成する必要があります。この文字列には、次の3種類の文字が含まれる可能性があります。英字:(A-Z)、(a-z)数字:0〜9特殊文字:上記以外のすべての文字関数は文字列を先頭から順に走査し、ちょうど3つの要素からなる配列を構築します。1番目の要素には文字列に含まれるすべての英字、2番目には数字、3番目には特殊文字を格納し、それぞれ元の文字列内での出現順(相対的な順序)を維持します。最後にこの配列を返します。例えば、関数への入力が次の場合を考えてみましょう。入力const str = thi!1s is S@