JavaScriptの文字列のダッシュの後にすべてを取得します


150

IEとFirefoxの両方で機能する最もクリーンな方法は何でしょうか。

私の文字列は次のようになります:sometext-20202

これで、 'sometext'とダッシュの後の整数は、さまざまな長さにすることができます。

部分文字列とインデックスのみを使用する必要がありますか、それとも他の方法ですか?

回答:


280

どのようにこれを行うでしょう:

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));

62
文字列がそうである場合、この関数は機能しないことを言及する価値はありませんsometext-20202-303か?
Istiaque Ahmed 2014

17
@IstiaqueAhmed質問が特定の非常に具体的な形式に関するものではなかった場合、「私の文字列は次のようになります:sometext-20202」
artlung

7
get everything after the dash in a string in javascriptこの場合、どちらが失敗するかという質問がありました。
アルテムカリンチュク

108

私が好む解決策は:

const str = 'sometext-20202';
const slug = str.split('-').pop();

slugあなたの結果はどこでしょうか


1
このソリューションは、複数の区切り文字を使用する場合に最適です。
イーサンケイリー

26
var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];

24
var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);

6

私の知る限り、両方substring()indexOf()MozillaとIEの両方でサポートされています。ただし、一部のブラウザー(特にNetscape / Opera)の以前のバージョンでは、substr()がサポートされていない場合があることに注意してください。

あなたの投稿は、substring()およびを使用してそれを行う方法をすでに知っていることを示しているindexOf()ので、コードサンプルを投稿しません。


アプリケーションに応じて、これは実際には分割よりも優れたソリューションです。複数ある場合、望ましくない結果が生じる可能性があるためです。
trevorgrayson 2013年

20
string.substring(string.indexOf( '-')+ 1)
trevorgrayson

indexOfはIE8以下には存在しませんが、ポリフィルは存在します。
Erik Honn 2014年

3

次のように、組み込みのRegExp(pattern [、flags])ファクトリー表記をjsで実行できます。

RegExp(/-(.*)/).exec("sometext-20202")[1]

上記のコードでは、exec関数は2つの要素(["-20202"、 "20202"])を持つ配列を返します。1つはハイフン(-20202)あり、もう1つはハイフンなし(20202)です。2番目の要素(インデックス1)を選択する必要があります



0

次の形式の正規表現を使用します。\ w- \ d + \ wは単語を表し、\ dは数字を表します。それらはそのままでは機能しないので、遊んでみてください。これを試してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.