10 Days of JavaScript の Hackerrank の Regular Expressions III 問題の解法


まず、問題の概要を理解しましょう。この問題では、与えられた文字列が特定のパターンに一致するかどうかを判定する必要があります。具体的には、文字列が 'Mr. ' または 'Mrs. ' の形式に一致するかどうかを確認しなければなりません。ここで、 はアルファベットの大文字で始まる文字列です。

解法の一つは、JavaScript の正規表現を使用する方法です。正規表現は、パターンに一致する文字列を効率的に検索するための強力なツールです。

以下は、この問題の解法のコード例です。

function getUsername(input) {
  const regex = /^(Mr\.|Mrs\.) ([A-Z][a-z]+)$/;
  const match = input.match(regex);

  if (match) {
    const title = match[1];
    const name = match[2];
    return { title, name };
  } else {
    return null;
  }
}
// 使用例
const input1 = 'Mr. Smith';
const result1 = getUsername(input1);
console.log(result1); // { title: 'Mr.', name: 'Smith' }
const input2 = 'Mrs. Johnson';
const result2 = getUsername(input2);
console.log(result2); // { title: 'Mrs.', name: 'Johnson' }
const input3 = 'Dr. Brown';
const result3 = getUsername(input3);
console.log(result3); // null

上記のコードでは、getUsername 関数が与えられた文字列からタイトルと名前を抽出します。関数内で使用される正規表現 /^(Mr\.|Mrs\.) ([A-Z][a-z]+)$/ は、文字列が 'Mr. ' または 'Mrs. ' の形式に一致するかどうかを確認します。一致する場合は、match 配列が返され、その中からタイトルと名前を取得して返します。一致しない場合は null を返します。

このように、正規表現を使用することで、文字列のパターンマッチングを簡潔かつ効率的に行うことができます。Hackerrank の 10 Days of JavaScript の問題を解く際には、正規表現を上手に活用して解法を見つけてみてください。