簡體   English   中英

有什么比在循環中分割字符串更好的方法呢?

[英]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個鍵的對象的最佳方法是什么: HeightWidthChannelCount並與每個鍵對應,有對應的值,例如:

   Width => [
              {'FeatureValue' : 1 , 'vmin' : 1 , ...} , 
              {'FeatureValue' : 230 , 'vmin' : 234 , ...}
             ]

依此類推,以獲取HeightChannelCount

我試圖拆分字符串,然后運行多個循環,並在循環內再次拆分字符串。 還有什么更好的方法? 如果可以采用正則表達式的方法,那將是最好的。

通過多次拆分來拆分(即解析)此字符串不是一個壞辦法。

但是,如果要使用正則表達式,請先通過在“,”上分割輸入內容將其分成幾行。 然后針對您輸入的每一行,使用此正則表達式將其解析為其組成部分:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM