Javascript 将字符串拆分为成对数字的数组
我正在尝试解决如何将以下十六进制字符串拆分为成对数字数组 目前,我有以下几点:Javascript 将字符串拆分为成对数字的数组,javascript,arrays,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", "
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"]
返回以下内容:
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"]
我想做的可能很明显,但我想自己做其余的。您可能希望通过字符串,并用逗号分隔这些对。最后在逗号上拆分字符串:
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"]
函数getRGB(hexVal){
var commaSeperated=“”;
//从输入字符串中删除第一个字符
hexVal=hexVal.子字符串(1,hexVal.长度);
//现在让我们用逗号分隔这对
对于(变量i=0;ifunction 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"]
函数getRGB(hexVal){
var commaSeperated=“”;
//从输入字符串中删除第一个字符
hexVal=hexVal.子字符串(1,hexVal.长度);
//现在让我们用逗号分隔这对
对于(变量i=0;i显然,你会想测试假值,等等,你可以把它缩短一行,但这是一个简单的方法来获得你想要的。卢克,接受功能方面的力量
a="#c0ffee"
"#c0ffee"
[1,3,5].map(function(o) {return a.slice(o,o+2)})
["c0", "ff", "ee"]
接受功能方面的力量,卢克
a="#c0ffee"
"#c0ffee"
[1,3,5].map(function(o) {return a.slice(o,o+2)})
["c0", "ff", "ee"]
获取字符串,将其转换为大写,并使用简单的正则表达式提取所有十六进制对。大写转换并不是绝对必要的,但它可以确保十六进制对的一致性。您也可以轻松地将字母字符全部小写(请注意,正则表达式的“A-F”部分现在是“A-F”):
或者,如果您不在乎,那么可以使用“i”修饰符使正则表达式不区分大小写:
function getRGB(hexVal) {
return hexVal.match(/[0-9a-f]{2}/gi);
}
另外,请注意,这些函数都不能确保您得到3对。如果您将“?!@$#00FF00FF”传递给它,您将得到[“00”,“FF”,“00”,“FF”]。类似地,如果您通过“00FF0”,您将得到[“00”,“FF”],因为只找到了两个完整的对
换句话说,您需要添加一些错误检查
获取字符串,将其转换为大写,并使用简单的正则表达式提取所有十六进制对。大写转换并不是绝对必要的,但它可以确保十六进制对的一致性。您也可以轻松地将字母字符全部小写(请注意,正则表达式的“A-F”部分现在是“A-F”):
或者,如果您不在乎,那么可以使用“i”修饰符使正则表达式不区分大小写:
function getRGB(hexVal) {
return hexVal.match(/[0-9a-f]{2}/gi);
}
另外,请注意,这些函数都不能确保您得到3对。如果您将“?!@$#00FF00FF”传递给它,您将得到[“00”,“FF”,“00”,“FF”]。类似地,如果您通过“00FF0”,您将得到[“00”,“FF”],因为只找到了两个完整的对
换句话说,您需要添加一些错误检查。太好了。我有点不识时务,所以有可能向aks征求一些意见吗?:)@丹尼尔:非常感谢你的评论。这对理解正在发生的事情有很大帮助。太好了。我有点不识时务,所以有可能向aks征求一些意见吗?:)@丹尼尔:非常感谢你的评论。这对理解正在发生的事情有很大帮助。谢谢你的回答。我不知道我将如何才能对这类事情有所了解。丹尼尔·瓦萨洛:IDK,显然有人心情不好。我会报答你的。谢谢你的回答。我不知道我将如何才能对这类事情有所了解。丹尼尔·瓦萨洛:IDK,显然有人心情不好。我会报答你的。我喜欢这个版本,但有点不确定它是如何工作的。我理解.map为数组中的每个元素调用提供的函数。提供的数组是1,3,5,但我不确定如何从那里建立连接???。map为数组的每个成员调用括号中的匿名函数[1,3,5]。每次调用函数时,o等于一个数组元素,并且它还可以访问原始变量a(在您的版本中为hexVal)。它使用参数o(开始位置)和o+2(结束位置)调用.slice。我也喜欢这个版本,但有点不确定它是如何工作的。我理解.map为数组中的每个元素调用提供的函数。提供的数组是1,3,5,但我不确定如何从那里建立连接???。map为数组的每个成员调用括号中的匿名函数[1,3,5]。每次调用函数时,o等于一个数组元素,并且它还可以访问原始变量a(在您的版本中为hexVal)。它使用参数o(开始位置)和o+2(结束位置)调用.slice。另见