我有一个字符串:
FeatureName:Height-FeatureValue:1-vmin:1-max:20000-pricing-row-,
FeatureName:Width-FeatureValue:1-vmin:1-max:20000-pricing-row-,
FeatureName:ChannelCount-FeatureValue:23-vmin:234-max:0-pricing-row-,
FeatureName:Height-FeatureValue:1980-vmin:17-max:20000-pricing-row-,
FeatureName:Width-FeatureValue:230-vmin:234-max:987-pricing-row-
FeatureName:ChannelCount-FeatureValue:98-vmin:2834-max:0-pricing-row-
将此字符串转换为具有3个键的对象的最佳方法是什么:Height
,Width
,ChannelCount
并且对应于每个键,有相应的值,例如as:
Width => [
{'FeatureValue' : 1 , 'vmin' : 1 , ...} ,
{'FeatureValue' : 230 , 'vmin' : 234 , ...}
]
等Height
和ChannelCount
。
我试图拆分字符串,然后运行多个循环并在循环内再次拆分字符串。有什么比这更好的方法?如果可以遵循正则表达式的方法,那将是最好的。
答案 0 :(得分:0)
通过多次拆分来拆分(即解析)此字符串并不是一个糟糕的解决方案。
但是,如果要使用正则表达式,请首先将输入拆分为“,”,然后将输入拆分为单独的行。 然后,对于输入的每一行,使用此正则表达式将行解析为其组件:
var s = 'FeatureName:Height-FeatureValue:1-vmin:1-max:20000-pricing-row-';
var ar = /([^-]+)-([^-]+)-([^-]+)-([^-]+)-(.+)/.exec(s);
ar [1]到ar [5]包含组件,例如:
'FeatureName:Height',
'FeatureValue:1',
'vmin:1',
'max:20000',
'pricing-row-'
可选地,此正则表达式将进一步将每一行分成每个组成部分:
var ar = /([^:]+):([^-]+)-([^:]+):([^-]+)-([^:]+):([^-]+)-([^:]+):([^-]+)-(.*)/.exec(s)
例如:
'FeatureName',
'Height',
'FeatureValue',
'1',
'vmin',
'1',
'max',
'20000',
'pricing-row-',
希望您可以使用这些正则表达式来优化您的解决方案。