javascript - 字符串拆分为 javascript 对象

标签 javascript object split

我有来自服务器的字符串:

//A
123|155-244
  • 第一个数字总是表示“红色”
  • | 后面的数字总是表示“绿色”
  • 之后的数字-始终表示“蓝色”

这里的问题是绿色和蓝色可以按任意顺序返回:

//B
123-244|155

或者它们可能完全缺失:

//C
123|155 

我需要一个返回一个数组/对象的函数来简化事情:

//A
var result = {red:"123", green:"155", blue:"244"}

//B
var result = {red:"123", green:"155", blue:"244"}

//C
var result = {red:"123", green:"155", blue:"0"}

我尝试了两个函数,一个用于获取绿色,另一个用于获取蓝色,但我意识到这不能正常工作,具体取决于它们在字符串中出现的顺序。

var getGreen = function(myvar){
    return myvar.split('-'); 
};
var getBlue = function(myvar){
    return myvar.split('|'); 
};

这样做有时会使我的对象看起来像这样:

var result = {red:"123", green:"155", blue:"244|155"}

我应该如何进行?

最佳答案

不需要正则表达式:

parse = function(s) {
    return {
        red:   parseInt('+' + s, 10) || 0,
        green: parseInt(s.split('|')[1], 10) || 0,
        blue:  parseInt(s.split('-')[1], 10) || 0,
    };
};

//

test = [
    '123',
    '222|333-444',
    '55-66|77',
    '123|456',
    '123-456',
    '|123-456',
    '-123|456',
    '010|020-030',
  
];
  
test.map(parse).forEach(r => 
   document.write('<pre>' + JSON.stringify(r) + '</pre>'));

这利用了 parseInt 在第一个不可解析的字符处停止并在给定垃圾时返回假值的事实。 '+' + s hack 是为了使前导破折号无效(否则会被误认为是减号)。

关于javascript - 字符串拆分为 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428347/

相关文章:

javascript - 如何在 `onclick`函数中使用元素id作为JS函数参数?

php - 如何让用户像 Facebook 一样上传多张图片?

javascript - jquery ui - 可排序 : get new position of all elements

javascript - jQuery 1.7.2 AJAX 调用抛出 NS_ERROR_XPC_NOT_ENOUGH_ARGS 错误

java - Java 可以转换任何东西吗?

vb.net - 如何在一行中分割和修剪字符串

javascript - 如何在我的幻灯片中插入幻灯片指示点?

java - 调用方法,但不会返回值。 java

java - Android:将字符串按 "\n"拆分为字符串而不是新行

python - 如何将数据框的列值拆分为多列