Почему этот метод не работает для назначения символов в JavaScript? - PullRequest
3 голосов
/ 21 сентября 2010

Хорошо, здесь возникает вопрос новичка:

//function removes characters and spaces that are not numeric.

// time = "2010/09/20 16:37:32.37"
function unformatTime(time) 
{       

    var temp = "xxxxxxxxxxxxxxxx";

    temp[0] = time[0];
    temp[1] = time[1];
    temp[2] = time[2];
    temp[3] = time[3];
    temp[4] = time[5];
    temp[5] = time[6];
    temp[6] = time[8];
    temp[7] = time[9];
    temp[8] = time[11];
    temp[9] = time[12];
    temp[10] = time[14];
    temp[11] = time[15];
    temp[12] = time[17];
    temp[13] = time[18];
    temp[14] = time[20];
    temp[15] = time[21];   


}

В FireBug я вижу, что символы времени не назначены для temp?Должен ли я использовать функцию replace (), чтобы сделать что-то подобное в JS?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 21 сентября 2010

[^\d] - это регулярное выражение для "не цифры".

Более подробно,

[] представляет «класс символов» или группу символов для сопоставления.
\d - это сокращение для 0-9 или любой цифры.
^ в классе символов отрицает класс.

function unformat(t)
{
   return t.replace( /[^\d]/g, '' );
}

В любом случае, вы не можете получить доступ к такой строке в одном из основных браузеров. Вам нужно будет использовать str.charAt(x).

3 голосов
/ 21 сентября 2010

Вы обязательно должны использовать для этого регулярное выражение.

function unformatTime(time) {
    return time.replace(/[^\d]/g, '');
}

В этом случае он ищет все, что не является цифрой, и заменяет его пустой строкой.Буква «g» в конце означает «глобальный», поэтому он будет заменять столько раз, сколько сможет.

  • ^ Это внутри скобки означает «не»
  • \d Это значит «цифра»
  • g Это значит «глобально»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...