gpt4 book ai didi

javascript - 用于将对象符号转换为数组值的正则表达式

转载 作者:行者123 更新时间:2023-12-03 07:51:26 24 4
gpt4 key购买 nike

我正在尝试将文件中定义的对象转换为数组。

我正在匹配的对象上使用 JSON.parse

一些多行对象没有被替换。

const txtara = document.querySelector('#demo');

const fixJSON = (invalidJson) => invalidJson
.replace(/(\w+)(?=\s*:)/g, '"$1"') // Quote keys
.replace(/,\}/, '}') // Remove stray commas
.replace(/,\n\s*\}/, '}'); // Remove stray commas (multiline)

const jsonObjectToArray = (jsonObject) => {
const obj = JSON.parse(fixJSON(jsonObject));
return JSON.stringify(Object.values(obj));
}

let content = txtara.value
// Inline object
.replace(/(\{(.+)\})/g, (match, json) => jsonObjectToArray(json))
// Multi-line object
.replace(/(\{\s*\n(?:\s*\w+\s*:\s*.+,?\n)+\s*\})/, (match, json) => jsonObjectToArray(json));

txtara.value = content;
*,
*::before,
*::after {
box-sizing: border-box;
}

html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}

body {
display: flex;
}

#demo {
flex: 1;
resize: none;
color: #EEE;
background: #222;
padding: 0.5rem;
}
<textarea id="demo">
{x:1,y:2}
{x:1,y:2,z:3}
{x:1,y:2,z:3,}
{ x: 1, y: 2, z: 3 }
{
x: 1,
y: 2,
}
{
x: 1,
y: 2
}
{
x: 1,
y: 2,
z: 3
}
{
x: 1,
y: 2,
z: 3,
}
</textarea>

最佳答案

如果您只需要数字,那么您的答案是

function textToNumberArrays(text) {
return text.match(/\{[^}]\}/g) // match {...}
.map(obj => {
return obj.match(/\d+(\.\d+)?/g) // match 123 and 123.456
.map(n => Number(n)) // convert match strings to numbers
})
}

关于javascript - 用于将对象符号转换为数组值的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77019192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com