文字列が特定の値で終わるかどうかを調べる最も簡単な方法は何ですか? prototypejsからJavaScriptまたはjQuery文字列がユーティリティ関数で終了する
答えて
あなたはこのように、正規表現を使用することができます。
文字列はそれの終わり($)で '値' を持っている場合はtrueを返しますstr.match(/value$/)
。
テスト失敗:value = "test [a-z]"それ以外の場合は、 'test [az]'一致(/ [az] $ /)は "null"を返す – gmunkhbaatarmn
通常は私のバッグから正規表現ツールを取得しませんが、これはすべての選択肢に勝ちます(String#endsWith is firefoxでのみネイティブにサポートされています。サードパーティ製のjsを拡張/使用するのはちょっと残念です) – diclophis
match()はブール値を返しません。 'foobar'.match(/ bar $ /)は["bar"]を返す –
盗まれた:
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
'slaughter'.endsWith('laughter');
// -> true
コアクラスのプロトタイプを変更することは、 Crockfordは、彼の著書「JavaScript:The Good Parts」の中で、これを「グローバルな軽減」と呼んでいます。 –
なぜあなたはそれをしてはいけないのですか?それともCrockfordが言ったので、あなたはそれをしないのですか? –
JSのすべての実装で動作することが保証されていないため、ECMAScript Compact Profile仕様(ECMA-327:http://www.ecma-international.org/publications/standards/Ecma-327 .htm)は、 "コンパクト"な実装(例えば、携帯電話などのハンドヘルドデバイス上)でサポートする必要がないことを指定します(5.2節を参照)。たとえあなたがそれに煩わされていないとしても、新しいバージョンのJSを破る可能性はかなり高いです。たとえば、以前に配備されたコードでArray.prototypeに "forEach"メソッドを追加した人は、最近のバージョンのFirefoxでは – NickFitz
正規表現
"Hello world".match(/world$/)
あなたは常にStringクラスのプロトタイプを作成することができ、これは動作します:
String.prototype.endsWith =機能(文字列) {リターン(this.match(STR + "$"あなたは私は何に拡大していますhttp://www.tek-tips.com/faqs.cfm?fid=6620
これは次の場合に失敗します。 strには特別な正規表現文字が含まれています(例: "[ssss]")。 – studgeek
にStringクラスのための他の関連の拡張機能を見つけることができます
)== strの)} @ luca-matteisは投稿しましたが、コメントに指摘されている問題を解決するために、ネイティブ実装を上書きしないようにコードをラップする必要があります。
if (!String.prototype.endsWith) {
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
}
このArray.prototype.forEach方法について提案された方法は、the mozilla developer network
で指摘された私は、試合のアプローチとは運がなかったが、これは働いていた:
あなたは文字列を持っている場合、 "これは私の弦です。"
var myString = "This is my string.";
var stringCheck = ".";
var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0;
alert(foundIt);
変数stringCheckを確認する文字列に変更することができます。まだよく、このように自分自身の機能でこれをスローするようになります:
function DoesStringEndWith(myString, stringCheck)
{
var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0;
return foundIt;
}
本当に素敵な、@ theJerm。これは、さまざまな状況で私のために働いたのに対し、.matchは必ずしもそうではありませんでした。 – Nathan
ES6は、これを直接サポートしています。
'this is dog'.endsWith('dog') //true
IE11以降を使用している人がいなくなった場合に便利です。 – AntonChanning
うん、しかし、それはあなたのためにベルベルを持っています。 –
あなたは'hello world'.slice(-5)==='world'
を行うことができます。すべてのブラウザで動作します。正規表現よりもはるかに高速です。
- 1. Perl NULLで終了する文字列
- 2. 終了文字列定数スクリプトエラー
- 3. 文字列内のC文字列ポインタがNULLで終了する方法は?
- 4. Javaネイティブコード文字列終了
- 5. 関数が終了した後にjavascriptを実行します。
- 6. cleartimeout関数が終了した後に実行します(jQuery)
- 7. jquery - 関数が終了するまで待つ
- 8. 関数が終了するまで(AsyncTask)
- 9. 配列関数が終了するまで待機します。
- 10. イベント/関数がjqueryまたはjavascriptで完了するまで一時停止
- 11. Newtonsoft.Json.JsonReaderException:未終了文字列です。
- 12. Jquery。関数が終了するのを待たずに
- 13. ヌルで終了する2文字の文字列
- 14. 符号なし文字配列を文字列に変換するためのJavaユーティリティ関数の作成
- 15. Javascript 'TypeError:文字列が関数ではありません。'
- 16. 非終端文字列はJavaScriptで
- 17. PHP strtotimeは1分で終了します。 NOT日付文字列関連
- 18. jqueryがアニメーションの終了を待たずに完了する関数
- 19. Railsで文字列の開始または終了を確認する
- 20. 完了前に戻る関数ブロックが終了しました
- 21. 文字列が ";"で終わるときの部分文字列エラーまたは ""
- 22. Javascript関数がcondtionが失敗した関数を終了しない
- 23. 文字列が数字か日付かを判断するjavascript関数またはjquery関数はありますか?
- 24. javascript/jQuery関数_after_イベントが完了して返されました
- 25. 特定の文字で終了する文字列プロパティを持つリスト項目の数を数えます。
- 26. MVC3終了文字列定数構文エラー
- 27. 非ヌル終了C文字列を終了C文字列に変換する最もきれいな方法
- 28. DllImport nullで終了した文字列を返すAccessViolationException
- 29. "文字列またはバイナリデータが切り捨てられます。\ r \ n文が終了しました"
- 30. 未終了の文字列リテラルエラー
また、この質問の2番目の答えを参照してください:http://stackoverflow.com/questions/280634/endswith-in-javascript – Baldrick