2012-01-27 1 views
2

У меня есть строка, которую нужно разделить на три символа подчеркивания. Пример строки может быть:Разделить строку на массив с Javascript в IE8

var stringItemsPlanner = "Hello this___is a string___which___needs splitting into___an array"; 

Поэтому я использую функцию Split(). Хорошо во всем, кроме IE8 (и, вероятно, 7 тоже, но не пробовали), который дает ошибку «Объект не поддерживает это свойство или метод», если строка не содержит этих символов. Так что я нашел еще один пост, который сказал, чтобы проверить, что подчеркивание символов появляются в строке перед расщеплением, так что я это сделать:

if (stringItemsPlanner.indexOf('___') == -1){ 
    arrItemsPlanner = []; 
}else{ 
    arrItemsPlanner = stringItemsPlanner.split('___'); 
} 

Но теперь эта ошибка тоже, потому что, по-видимому IE8 не поддерживает «IndexOf».

После долгих поисков я пытался добавить некоторый код в верхней части моего сценария, чтобы действовать в качестве «polyfil» для этого метода:

if (!Array.prototype.indexOf){ 
    Array.prototype.indexOf = function(elt /*, from*/){ 
    var len = this.length >>> 0; 
    var from = Number(arguments[1]) || 0; 
    from = (from < 0)? Math.ceil(from) : Math.floor(from); 
    if (from < 0){ 
     from += len; 
     for (; from < len; from++){ 
     if (from in this && this[from] === elt){ 
      return from; 
     } 
     return -1; 
     }; 
    } 
    } 
} 

Но до сих пор нет радости.

Я сейчас пережил разочарование и не могу думать о каком-либо другом способе заставить эту простую работу работать.

Может ли кто-нибудь пролить свет на это или подумать об альтернативном способе безопасного разделения строки на массив таким образом, чтобы работать кросс-браузер? Это должно быть просто, но я просто не могу думать прямо сейчас.

Спасибо всем!

+0

Вы полностью уверены, что 'split' не работает в IE8? (Я просто попробовал его в этом «IE8 режиме» в IE9, также в «режиме IE7», и он кажется прекрасным) – cambraca

+0

split() должен поддерживаться в IE8 – kinakuta

+0

Извините, я прояснил это сейчас. Split поддерживается IE8, но вызывает исключение, если символы не находятся в разделяемой строке - что может произойти в моем случае и является причиной этой проблемы. – Dan

ответ

1

Посмотрите здесь

http://jsfiddle.net/mplungjan/Bnx6m/

var stringItemsPlanner = "Hello this___is a string___which___needs splitting into___an array"; 

var arrItemsPlanner = (stringItemsPlanner.length==0 || stringItemsPlanner.indexOf('___') == -1)? []:stringItemsPlanner.split('___'); 

alert(arrItemsPlanner.join('\n')) 
Смежные вопросы