【问题标题】:convert an array like looking string into array in Javascript [duplicate]在Javascript中将类似查找字符串的数组转换为数组[重复]
【发布时间】:2019-03-02 13:26:54
【问题描述】:

我想将类似查找字符串的数组转换为数组。

例如:

从字符串

 var str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free 
   Options']"

到数组

['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options']

我已经用正则表达式试过了

str.match(/'[a-z]*'/gi).map((elm)=>{
    return elm.replace(/'/g,"")
    })

但这并没有考虑到单词之间或多个单词之间的空格。

请告诉我有效的解决方案。

【问题讨论】:

  • 你有一个更大的字符串吗?
  • 我正在使用 PapaParse 从 CSV 文件中读取此字符串。并且在 csv 文件中,数据像 ['亚洲'、'日本'、'素食友好'、'素食选项'、'无麸质选项'] 存储在单个单元格中
  • 您可以将所有' 替换为" 然后JSON.parse。但是,如果您在任何项目上都有撇号,那么它将不起作用
  • 使用'[^']*'...

标签: javascript arrays regex string


【解决方案1】:

把单引号换成双引号,用JSON.parse()转成数组:

var str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options ']"

var result = JSON.parse(str.replace(/'/g, '"'))

console.log(result)

【讨论】:

    【解决方案2】:

    只要replace所有单引号被双引号和JSON.parse()它:

    let str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options']";
    
    str = str.replace(/'/g,'"') // replace all ' by "
    
    let arr = JSON.parse(str) // now that it's valid JSON, parse it
    
    console.log(arr)

    【讨论】:

      【解决方案3】:
      var str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options ']";
      console.log(JSON.parse(str.replace(/'/g, '"')));
      

      【讨论】:

        【解决方案4】:
        str.replace(/[\[\]']+/g,'').split(', ')
        

        试试这个。 它适用于您发布的字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-27
          • 1970-01-01
          • 2019-07-29
          • 1970-01-01
          • 2015-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多