2012-01-07 7 views
2
data = 'numbersXXXtext'; 

または私はいつも "テキスト" を取得したいのstring.Split

data = 'XXXtext'; 


var get = data.split('XXX'); 
var sum = get[1]; 

によって返された配列を使用します。 datanumbersXXXtextの場合、コードは正常に機能しますが、dataXXXtextの場合は、get[1]は未定義です。

誰もが、私はこの問題を解決する方法を知っていますか?

+0

は、それは[0]を取得することはないでしょう、とだけ、配列内の項目ですか? –

+0

@Mattは答えを投稿しました。@Mattはコメントの中でより斬新な選択肢を提案しましたが、どのブラウザで 'undefined 'が得られますか? .split( "XXX")[1] 'は" test "を返します。 – nnnnnn

+1

また、変数名に' get'を指定しないでください。 'get'はキーワードのようなものになっています。 – PointedEars

答えて

1

これを試してみてください:

var sum = get.length > 1 ? get[1] : get[0] 
+1

'get [get.length -1]'は良い(? – Matt

6

を文字列でXXXの唯一の発生がある場合は、あなたが望むビットは常にsplitによって返される配列内の最後の項目になります。あなたは、配列の最後の項目を取得するためにpopを使用することができます。

var a = "numbersXXXtext"; 
var b = "XXXtext"; 

console.log(a.split('XXX').pop()); // "text" 
console.log(b.split('XXX').pop()); // "text" 
+3

これは、**これは配列から最後の要素を削除**することに注意することが重要だと思います。それを取得するだけではありません。 – Matt

+0

確かに、私の答えでは重要ではありませんが、 'split'から返された配列は決して格納されないためです。あなたはもちろんそうです。 – lonesomeday

1

奇妙に、私はちょうどあなたのコードを試みたが、それが働いています。 (http://writecodeonline.com/javascript/) 何か不足していませんか?

data = 'numbersXXXtext'; 
    //data = 'XXXtext'; 
    var get = data.split('XXX'); 

    document.write(get[1]); 
    document.write("</br>"); 
    document.write(get); 
    document.write("</br>"); 

私はあなたの文字列のどちら

1

で部分文字列を使用して代替を未定義取得できませんでした:それは最初のものであるため、

var data = 'numbersXXXtext'; 
var value = data.substring(data.indexOf('XXX') + 'XXX'.length); 
関連する問題