删除所有双引号前后的空格

3

我使用了以下公式来删除所有在引号之前和之后的空格,但没有效果。

var test_string = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'
var test_string_format = test_string.replace(/^[ '"]+|[ '"]+$|( ){2,}/g,'$1')
    
console.log(test_string_format)

 

怎样使用正则表达式来获取所需的输出?
{"1":"b.) 一些意面沙拉","10":"a.) 是的,一些面包","11":"a.) 鸡蛋和土司"}

请提供足够的代码,以便他人更好地理解或重现问题。 - Community
5个回答

3
假设字符串内容始终是有效的 JSON,您可以这样做:

var str = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'

const res=JSON.stringify(Object.fromEntries(Object.entries(JSON.parse(str)).map(e=>e.map(e=>e.trim()))))

console.log(res)

我知道,这种方法有点“笨拙”,但对于给定的样本字符串确实有效。

该代码段解析JSON字符串,然后将生成的对象转换为数组的数组。然后对每个子数组的每个元素进行.trim(),在操作结束时,通过.Object.fromEntries()重构对象,并通过JSON.stringify()将其转换回JSON字符串。


2

将零个或多个空格替换为引号,然后再加上零个或多个空格,最终只保留引号:

replaceAll(/ *" */g, '"')

const test_string = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'

const trimmed = test_string.replaceAll(/ *" */g, '"');

console.log(trimmed);


1
replaceAll 在所有环境下都不起作用。相反,请使用 replace - Igor Micev

2

const test_string = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }';

const test_string_format = test_string.replace(/\s*"\s*/g, '"');

console.log(test_string_format);

  • \s: 匹配任何空白字符
  • *: 匹配前一个字符(\s)零次或多次
  • ": 匹配双引号字符

2
const regex = /(\s*["]\s*)/gm;

var test_string =  = `{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }
`;

console.log(test_string.replace(regex, '"'))

1
它能够正常工作,但其实你不需要:1)捕获组,2)在“”周围设定字符类,3)使用“m”修饰符。 - Casimir et Hippolyte
@CasimiretHippolyte 你是对的,m修饰符可以被移除。关于分组和字符类,我只是想让它更易读,但/\s*"\s*/g也可以工作。 - EspressoCode

0

    console.log('{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'
    .replaceAll(/( *\" +)|( +\ *)/ig,'"'))


1
replaceAll 不适用于所有环境。请使用 replace - Igor Micev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接