2016-10-03 9 views
0

文字列がABC_DEF_GHIなどです。最初の文字列を取得する_

JavaScriptを使用する最初の_(この場合はDEF_GHI)の後にすべてを取得する必要があります。文字列に_がいくつでもあってもかまいません。

私は

var str = "ABC_DEF_GHI_JKL"; 
var n = str.lastIndexOf('_'); 
var output = str.substring(n + 1); 

ような何かを行う場合はこれが私の最後のアンダースコアの後にすべてを与えるだろう。しかし、私は最初のアンダースコアの後にすべてが必要です。その後、アレイ、_時分割、および低下に私の最初の後にすべてを与えるだろうなfirstIndexOfなどの方法_

答えて

2

あなたはこれを行うの

var str = "ABC_DEF_GHI_JKL"; 
 
var n = str.indexOf('_'); 
 
var output = str.substring(n + 1); 
 
console.log(output);

-1

console.log("ABC_DEF_GHI_JKL".split('_').slice(1).join('_'));

上記単純分割のあなたの文字列が見つかりませんでした最初の配列要素を作成し、_で結合します。

+0

そしてdownvoteがためだった?...使用のindexOfはとにかく素晴らしい解決策ではありません。後で2番目の後にすべてを取得したい場合はどうなりますか?これをダウン投票すると、Stack Overflowでどの程度狭いのかがわかります。少なくとも、あなたの下票を説明するマナーを持っています。 – Keith

+1

最初のアンダースコアの後にパートを取得する必要があります。そのための標準的な解決策は 'indexOf'を使うことです。要件が変更された場合は、コードも変更されます。理論的、将来的な要件を解決するコードを追加することに意味はありません。特に、そのコードが直接的な解決策よりも高価な場合。 – str

+0

@strこれは必須条件です - > JavaScriptを使用すると、最初の_(この場合はDEF_GHI)の後にすべてを取得する必要があります。要件は彼のコードを修正することではありませんでした。彼の投稿をもう一度読む。英語が母国語でない場合、私はあなたを許します。何の理由もない投票をするだけで、人々を投票トロールにすることができます。スタックオーバーフローには不向きです。 – Keith

0

一つの方法は、

var str = "ABC_DEF_GHI", 
 
    pos = str.indexOf("_"); 
 
result = str.slice(pos+1); 
 
console.log(result);

で最初に出現するがかかりますどの indexOf()して lastIndexOf()を交換する必要があります210
+0

私はここであなたに投票するつもりはありません。しかし、私は結果が少し間違っていることを指摘します。 – Keith

+0

@Keithああ、そうです。指摘してくれてありがとう。私は訂正した。 – Redu

1

var str = "ABC_DEF_GHI", 
 
pos = str.indexOf("_"); 
 
result = str.slice(pos+1); 
 
console.log(result);

+0

なぜあなたがここで下降投票をしたのか分からないので、私はあなたに投票します。ここの誰かが下向きのトロールです。 – Keith

+1

@Keith彼は何の説明もしていないので、彼は下落したかもしれない。これは良いことではない。しかし、どこかで私はあなたに同意する、downvote人々はなぜ彼らがdownvoteを説明するコメントを追加する必要があります... –

関連する問題