[英]What could be the better way here than to split the string in a loop?
我有一個字符串:
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
並與每個鍵對應,有對應的值,例如:
Width => [
{'FeatureValue' : 1 , 'vmin' : 1 , ...} ,
{'FeatureValue' : 230 , 'vmin' : 234 , ...}
]
依此類推,以獲取Height
和ChannelCount
。
我試圖拆分字符串,然后運行多個循環,並在循環內再次拆分字符串。 還有什么更好的方法? 如果可以采用正則表達式的方法,那將是最好的。
通過多次拆分來拆分(即解析)此字符串不是一個壞辦法。
但是,如果要使用正則表達式,請先通過在“,”上分割輸入內容將其分成幾行。 然后針對您輸入的每一行,使用此正則表達式將其解析為其組成部分:
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-',
希望您可以使用這些正則表達式來完善您的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.