JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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

コードの解説

処理の流れを順番に見ていきましょう。

  1. str.split(' ') を使って、入力文字列をスペースで分割し、分割代入によって firstsecond の2つの変数に各単語を格納します。
  2. first[0]second[0] で、それぞれの単語の先頭文字を取り出します。
  3. substring(1) を使って、各単語の2文字目以降の部分を取得します。元のコードにある substring(1, first.length) は終了位置を省略した場合と同じ結果になるため、シンプルに substring(1) としても動作します。
  4. 相手側の単語の先頭文字を、それぞれの残りの部分の前に連結することで、先頭文字が入れ替えられた新しい単語が完成します。
  5. 最後に、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の特性上、元の文字列は変更されず、常に新しい文字列が生成される点にも注目してください。

  1. JavaScriptで数値の先頭の桁を交換した後の差の絶対値を求める方法

    問題の概要今回は、ちょうど2つの数値を含む配列を受け取るJavaScript関数を作成します。この関数の目的は、2つの数値の先頭の桁(最初の数字)同士を入れ替えた後、その数値の差の絶対値を返すことです。例として、配列 [105, 413] を考えてみましょう。105 の先頭の「1」と、413 の先頭の「4」を入れ替えます。すると、新しい数値はそれぞれ 405 と 113 になります。したがって、求める差は以下のようになります。|405 − 113| = 292解決のアプローチこの問題は、以下の手順で解決できます。各数値を文字列に変換する(String() を使用)。両方の文字列の先頭の1文字を

  2. JavaScriptで文字列内の文字を英字・数字・特殊文字に再グループ化する方法

    問題文字列 str を第一引数(唯一の引数)として受け取る JavaScript 関数を作成する必要があります。この文字列には、次の3種類の文字が含まれる可能性があります。英字:(A-Z)、(a-z)数字:0〜9特殊文字:上記以外のすべての文字関数は文字列を先頭から順に走査し、ちょうど3つの要素からなる配列を構築します。1番目の要素には文字列に含まれるすべての英字、2番目には数字、3番目には特殊文字を格納し、それぞれ元の文字列内での出現順(相対的な順序)を維持します。最後にこの配列を返します。例えば、関数への入力が次の場合を考えてみましょう。入力const str = thi!1s is S@