JavaScriptで文字列の終わりを確認する2つの方法

この記事では、freeCodeCampの「ConfirmtheEnding 」の課題を解決する方法について説明します。これには、文字列が特定の文字シーケンスで終わっているかどうかのチェックが含まれます。

私がカバーする2つのアプローチがあります:

  1. substr()メソッドを使用する
  2. extendsWith()メソッドの使用

アルゴリズムチャレンジの説明

文字列(最初の引数、str)が指定されたターゲット文字列(2番目の引数、target)で終わっているかどうかを確認します。

この課題は.endsWith()、ES2015で導入された方法で解決できます。ただし、この課題の目的のために、代わりにJavaScript部分文字列メソッドの1つを使用することをお勧めします。

function confirmEnding(string, target) { return string; } confirmEnding("Bastian", "n");

提供されたテストケース

confirmEnding("Bastian", "n") should return true. confirmEnding("Connor", "n") should return false. confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false. largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]) should return [9, 35, 97, 1000000]. confirmEnding("He has to give me a new name", "name")should return true. confirmEnding("Open sesame", "same") should return true. confirmEnding("Open sesame", "pen") should return false. confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false. Do not use the built-in method .endsWith() to solve the challenge.

アプローチ#1:組み込み関数で文字列の終わりを確認する— substr()で

このソリューションでは、String.prototype.substr()メソッドを使用します。

  • このsubstr()メソッドは、指定された場所から指定された文字数までの文字列内の文字を返します。

なぜ使っているのstring.substr(-target.length)

target.lengthが負の場合、substr()メソッドは文字列の末尾からカウントを開始します。これは、このコードチャレンジで必要なことです。

string.substr(-1)ターゲットが1文字より長い場合、文字列の最後の要素を取得するために使用する必要はありません。

confirmEnding("Open sesame", "same")

…ターゲットはまったく戻りません。

したがって、ここでstring.substr(-target.length)は、文字列「Bastian」の最後のインデックスである「n」を取得します。

次にstring.substr(-target.length)、ターゲットと等しいかどうかを確認します(trueまたはfalse)。

 function confirmEnding(string, target) { // Step 1. Use the substr method if (string.substr(-target.length) === target) { // What does "if (string.substr(-target.length) === target)" represents? // The string is 'Bastian' and the target is 'n' // target.length = 1 so -target.length = -1 // if ('Bastian'.substr(-1) === 'n') // if ('n' === 'n') // Step 2. Return a boolean (true or false) return true; } else { return false; } } confirmEnding('Bastian', 'n');

コメントを省く:

 function confirmEnding(string, target) { if (string.substr(-target.length) === target) { return true; } else { return false; } } confirmEnding('Bastian', 'n');

ifステートメントのショートカットとして三項演算子を使用できます。

(string.substr(-target.length) === target) ? true : false;

これは次のように読むことができます:

if (string.substr(-target.length) === target) { return true; } else { return false; }

次に、関数で三項演算子を返します。

 function confirmEnding(string, target) { return (string.substr(-target.length) === target) ? true : false; } confirmEnding('Bastian', 'n');

条件を返すだけで、コードをリファクタリングしてより簡潔にすることもできます。

function confirmEnding(string, target) { return string.substr(-target.length) === target; } confirmEnding('Bastian', 'n');

アプローチ#2:組み込み関数を使用して文字列の終了を確認する— extendsWith()

このソリューションでは、String.prototype.endsWith()メソッドを使用します。

  • このendsWith()メソッドは、文字列が別の文字列の文字で終わるかどうか、戻るtrueか、または必要falseに応じて決定します。この方法では大文字と小文字が区別されます。
function confirmEnding(string, target) { // We return the method with the target as a parameter // The result will be a boolean (true/false) return string.endsWith(target); // 'Bastian'.endsWith('n') } confirmEnding('Bastian', 'n');

これがお役に立てば幸いです。これは、freeCodeCampアルゴリズムの課題に関する私の「FCCアルゴリズムを解決する方法」シリーズの記事の一部です。ここでは、いくつかの解決策を提案し、内部で何が起こるかを段階的に説明します。

JavaScriptで文字列を繰り返す3つの方法

この記事では、freeCodeCampの「文字列を繰り返す」という課題を解決する方法について説明します。これには…

JavaScriptで文字列を逆にする3つの方法

この記事は、Free CodeCampの基本的なアルゴリズムスクリプト「文字列を逆にする」に基づいています。

JavaScriptで数値を因数分解する3つの方法

この記事は、Free CodeCampの基本的なアルゴリズムスクリプト「FactorializeaNumber」に基づいています。

JavaScriptでパリンドロームをチェックする2つの方法

この記事は、Free Code Camp Basic AlgorithmScripting「CheckforPalindromes」に基づいています。

JavaScriptで文字列内の最長の単語を見つける3つの方法

この記事は、Free CodeCampの基本的なアルゴリズムスクリプト「文字列内の最長の単語を見つける」に基づいています。

JavaScriptで文にタイトルを付ける3つの方法

この記事は、Free CodeCampの基本的なアルゴリズムスクリプティング「TitleCaseaSentence」に基づいています。

If you have your own solution or any suggestions, share them below in the comments.

Or you can follow me on Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-)

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!

Additional Resources

  • substr() method — MDN
  • endsWith() method — MDN
  • Ternary Operator — MDN