为什么这种方法在JavaScript中不能分配字符?

时间:2010-09-20 22:47:55

标签: javascript string dom

好的,这是一个新手问题:

//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 个答案:

答案 0 :(得分:4)

[^\d]是“非数字”的正则表达式。

更详细,

[]表示“字符类”或要匹配的字符组 \d0-9或任何数字的快捷方式 字符类中的^否定了该类。

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

无论如何,您无法在其中一个主要浏览器中访问类似的字符串。您需要使用str.charAt(x)

答案 1 :(得分:3)

你绝对应该使用正则表达式。

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

在这种情况下,它会查找任何非数字的内容并替换为空字符串。最后的'g'表示“全局”,因此它将尽可能多地替换它。

  • ^括号内的意思是“不是”
  • \d这意味着“数字”
  • g这意味着“全球”