Arrays 正则表达式:匹配JSON数组中的字符串值,将字符串拆分为多个值

Arrays 正则表达式:匹配JSON数组中的字符串值,将字符串拆分为多个值,arrays,regex,json,string,Arrays,Regex,Json,String,[工具:升华文本3] 你好,我正在寻找一些帮助与正则表达式,我有很少的经验,所以我希望得到一些帮助 我计划使用正则表达式帮助我用大量数据替换json文件(超过6k LOC) 我正在寻找一个正则表达式,它与以下json中数组中的字符串相匹配,并拆分这些结果(见最终结果): 最终结果: ["Cleric", "Ritual Caster", "Wizard"] 职业列表(不知道在正则表达式中是否有用):吟游诗人、牧师、德鲁伊、圣骑士、游侠、巫师、术士、巫师 *编辑:我忘了添加我正在使用的工具,使用

[工具:升华文本3]

你好,我正在寻找一些帮助与正则表达式,我有很少的经验,所以我希望得到一些帮助

我计划使用正则表达式帮助我用大量数据替换json文件(超过6k LOC)

我正在寻找一个正则表达式,它与以下json中数组中的字符串相匹配,并拆分这些结果(见最终结果):

最终结果:

["Cleric", "Ritual Caster", "Wizard"]
职业列表(不知道在正则表达式中是否有用):吟游诗人、牧师、德鲁伊、圣骑士、游侠、巫师、术士、巫师

*编辑:我忘了添加我正在使用的工具,使用Sublime Text 3 atm,但我可以使用JavaScript重写新数据并在我当前的json文件上复制

删除了无效的json,我只想编辑/修复数组。

尝试以下操作:

// Check the first string in the class property (which is assumedly an array) for a comma.
if (characterStats['class'][0].indexOf(',')) {
    // Reassign the property to the result of splitting this string at every comma. If the array has anything beyond the 0th entry, this will remove it.
    characterStats['class'] = yourBlob['class'][0].split(',')
}
编辑:

所以我们检查数组中的第一个条目,在您的示例中,它是一个带有多个逗号的大字符串。我们正在检查逗号的索引。如果字符串中存在逗号(并且超过了第0个索引),则我们将重新将对象的
.class
属性指定给在每个逗号处新拆分为数组的字符串

此解决方案解决了以下数据模型:

{
    class: ['one,big,string,of,words']
}
并将其转化为:

{
    class: ['one','big','string','of','words']
}
此解决方案假定您永远不会有这样的情况:

{
    class: ['wizard', 'sorcerer, cleric, knave']
}
在这种情况下,您必须执行一些更高级的循环和检查。

在JS中,您可以执行以下操作:

var classInput = ["Cleric, Ritual Caster, Wizard"];
var classString = classInput[0];  // get the String from the Array
var classOutput = classString.split(/,\s/g); // split into and Array with separate strings
或更短:

var classInput = ["Cleric, Ritual Caster, Wizard"];
var classOutput = classInput[0].split(/,\s/g);
举例说明您的类列表:


另外,“类”在计算机语言中通常是一个特殊的词,比如“id”、“var”等等——如果可能的话,尽量避免使用“类”作为关键词。最好试试“characterClass”、“profession”…

你在运行哪个工具/语言?
“class”:[“Ristice Caster”]
是绝对的还是
“class”:[任何单个条目]
?你使用什么编程语言?是Java吗?不要用regexp处理JSON。我正在使用Sublime Text 3,试图替换JSON文件中的数据。嗯,为什么要先替换
,\s
,然后用逗号拆分,而不是从
/,\s/
开始拆分?关于你对
的评论,我想你的意思是将它用作属性名,而不是“关键字”,但实际上,在现代浏览器中,将
用作属性名没有问题。谢谢你的建议:你是对的-正则表达式可以在拆分中直接使用-更新我的答案就可以了。谢谢@Nathantugy
var classInput = ["Cleric, Ritual Caster, Wizard"];
var classOutput = classInput[0].split(/,\s/g);