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

илиИспользуя массив, возвращаемый String.split

data = 'XXXtext'; 


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

Я хотел бы получить всегда "текст". Если data равно numbersXXXtext, код работает нормально, но если data - XXXtext, то get[1] не определено.

Кто-нибудь знает, как я могу это решить?

+0

Не было бы получить [0], так как он является первым, и только , элемент в массиве? –

+0

Я отправил ответ, а @Matt предложил более аккуратную альтернативу в комментарии, но в каком браузере вы получаете 'undefined'? Я пробовал в Chrome и IE и '" XXXtest ".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); 
Смежные вопросы