Javascript_javascript のヒントで String.startsWith メソッドと endsWith メソッドを実装する

WBOY
リリース: 2016-05-16 15:56:20
オリジナル
1549 人が閲覧しました

String 型を操作する場合、startsWith(anotherString) と endesWith(anotherString) は非常に便利なメソッドです。このうち、startsWith は現在の文字列が anotherString で始まるかどうかを決定し、endsWith はそれが終了するかどうかを決定します。例:

"abcd".startsWith("ab"); // true
"abcd".startsWith("bc"); // false
"abcd".endsWith("cd");  // true
"abcd".endsWith("e");  // false
"a".startsWith("a");   // true
"a".endsWith("a");    // true
ログイン後にコピー

残念ながら、JavaScript にはこれら 2 つのメソッドが付属していないため、必要な場合にのみ自分で記述することができます。もちろん書くのは難しくありません。

if (typeof String.prototype.startsWith != 'function') {
 String.prototype.startsWith = function (prefix){
  return this.slice(0, prefix.length) === prefix;
 };
}
ログイン後にコピー

String.slice() は、どちらも部分文字列を取得するという点で String.substring() に似ていますが、スライスの方が効率的であるというレビューもあります。ここで、indexOf() が使用されない理由は、文字列が非常に長い場合、indexOf は文字列全体をスキャンするため、indexOf の効率が非常に悪くなるからです。

if (typeof String.prototype.endsWith != 'function') {
 String.prototype.endsWith = function(suffix) {
  return this.indexOf(suffix, this.length - suffix.length) !== -1;
 };
}
ログイン後にコピー

startsWith とは異なり、endsWith ではindexOf を使用できます。その理由は、最後の文字列のみをスキャンするためであり、スライスよりも優れている点は、文字列をコピーする必要がなく、直接スキャンするだけでよいため、より効率的であることです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!