将字符串拆分为成对数字的数组

时间:2010-09-30 16:31:25

标签: javascript arrays

我正在尝试解决如何将以下十六进制字符串拆分为成对数字的数组。

目前我有以下内容:

function getRGB(hexVal) {

    var substrHexVal = hexVal.substring(1,hexVal.length);

    var splitHexVal = substrHexVal.split("");

    return splitHexVal;

}

var a = getRGB("#00FF00");

a;

返回以下内容:

["0", "0", "F", "F", "0", "0"]

但我需要解决这个问题:

["00", "FF", "00"]

可能很明显我想做什么,但我想自己做其余的事。

4 个答案:

答案 0 :(得分:10)

拥抱功能方面的力量,卢克

a="#c0ffee"
"#c0ffee"

[1,3,5].map(function(o) {return a.slice(o,o+2)})
["c0", "ff", "ee"]

答案 1 :(得分:3)

您可能希望传递字符串,并用逗号分隔对。最后在逗号上分割字符串:

function getRGB(hexVal) {
  var commaSeperated = '';

  // Removes the first character from the input string
  hexVal = hexVal.substring(1, hexVal.length);

  // Now let's separate the pairs by a comma
  for (var i = 0; i < hexVal.length; i++) {
    // Iterate through each char of hexVal

    // Copy each char of hexVal to commaSeperated
    commaSeperated += hexVal.charAt(i);

    // After each pair of characters add a comma, unless this
    // is the last char
    commaSeperated += (i % 2 == 1 && i != (hexVal.length - 1)) ? ',' : '';
  }
  // split the commaSeperated string by commas and return the array
  return commaSeperated.split(',');
}

console.log(getRGB("#00FF00"));    //  ["00", "FF", "00"]

答案 2 :(得分:2)

function getRGB(hexVal) {

    return hexVal.toUpperCase().match(/[0-9A-F]{2}/g);

}

取字符串,将其转换为大写,并使用简单的正则表达式提取所有十六进制对。大写转换不是绝对必要的,但它确保您的十六进制对是一致的。您可以轻松地将字母字符全部小写(注意正则表达式的“A-F”部分现在是“a-f”):

function getRGB(hexVal) {

    return hexVal.toLowerCase().match(/[0-9a-f]{2}/g);

}

或者,如果你只是不在乎,那么你可以使用“i”修饰符使你的正则表达式不敏感:

function getRGB(hexVal) {

    return hexVal.match(/[0-9a-f]{2}/gi);

}

此外,请注意,这些功能都不能确保您获得3对。如果您将“_?!@#$#00FF00FF”传递给它,您将获得[“00”,“FF”,“00”,“FF”]。同样,如果你传递“00FF0”,你会得到[“00”,“FF”]因为只找到了2对完整的对。

换句话说,您需要添加一些错误检查。

答案 3 :(得分:1)

function parseHexColor(colorVal) {
  var regex = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i;
  colorVal = colorVal.replace(regex,"$1,$2,$3");
  return colorVal.split(",");
}

显然你想要测试虚假值等等,你可以用线来缩短它,但这是获得你想要的一种简单方法。