字符串处理功能不能仅在IE中正常工作

时间:2011-10-27 06:12:38

标签: javascript html

想知道错误是如何出现在IE中的 可以修改吗? 3Q。

Function
input: 192.2.09.001
output: 192.2.9.1

ERROR@IE
input: 192.2.09.001
output:  undefinedundefinedundefined.undefined.undefinedundefined.undefinedundefinedundefined

Code: ip_normalize(ip)

function remove_0(input)
{

    var i;
    var output_string="";
    var tag=0;
    for (i=0; i< input.length ; i++)
    {
            if(i==input.length-1 || tag==1)
            {
                    output_string+= input[i];
            }
            else
            {
                    if(input[i]!='0')
                    {
                            output_string+= input[i];
                            tag=1;
                    }
            }
    }
    return output_string;
}

function ip_normalize(ip)
{
    var ip_s = ip.split('.');
    var ip_n = "";
    var ip1="",ip2="",ip3="",ip4="";
    if(ip_s.length!=4)
            return ip;
    ip1 = remove_0(ip_s[0]);
    ip2 = remove_0(ip_s[1]);
    ip3 = remove_0(ip_s[2]);
    ip4 = remove_0(ip_s[3]);

    ip_n = ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4;

    return ip_n;
}

3 个答案:

答案 0 :(得分:2)

你不能简单地使用:

function ip_normalize(ip)
{
    var ip_s = ip.split('.', 4);
    if (ip_s.length != 4) return ip;
    return parseInt(ip_s[0], 10) + "." +
           parseInt(ip_s[1], 10) + "." + 
           parseInt(ip_s[2], 10) + "." + 
           parseInt(ip_s[3], 10);
}

答案 1 :(得分:1)

function normalizeIPv4(str) {
  var ipA=str.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
  if(!ipA)return; // undefined because string not in valid format
  for(var i=1;i<5;i++) {
    ipA[i]=(+ipA[i]);
    if(!(ipA[i]>=0&&ipA[i]<=255))return; // undefined because string not in valid format
  }
  return ipA[1]+"."+ipA[2]+"."+ipA[3]+"."+ipA[4];
}

答案 2 :(得分:0)

您可以尝试以下方法:

    function cleanIP(IP) {
      var result = [],
          array = ip.split('.');
      for (i in array) {
          result.push(+array[i]);
      }
      return result.join('.');
   }

通过调用

运行它
cleanIP("192.168.001.010");

编写新函数更快,然后搞乱IE;