当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何用JavaScript解析自定义文本?

熊锐进
2023-06-03

用JavaScript写一个解析函数

将如下字符串:

bus ->  pcc(pcc1) -> transformer -> tfm(tfm1) -> elink
                                    tfm(tfm1) -> load
        pcc(pcc1) -> transformer -> tfm(tfm2) -> load
        pcc(pcc1) -> transformer -> tfm(tfm3) -> load

bus -> load

解析成类似于下面的json:

{
    "nodeType": "bus",
     "links": [
        {
            "nodeType": "pcc",
            "nodeName": "pcc1",
            "next": {
                "nodeType": "transformer",
                "links":[ 
                    {
                        "nodeType": "tfm",
                        "nodeName": "tfm1",
                        "links": [
                            {
                                "nodeType": "elink",
                            },
                            {
                                "nodeType": "load",
                            }
                        ]
                    },
                    {
                        "nodeType": "tfm",
                        "nodeName": "tfm2",
                        "next": {
                            "nodeType": "load",
                        }
                    },
                    {
                        "nodeType": "tfm",
                        "nodeName": "tfm3",
                        "next": {
                            "nodeType": "load",
                        }
                    },
                ]
            }
        },

        {
           
            "nodeType": "load",
                 
        }
    ]
}

共有1个答案

戚峻
2023-06-03
function parseText(text) {
    const lines = text.split('\n');
    const root = { nodeType: 'bus', links: [] };
    let currentParent = root;

    lines.forEach(line => {
        const parts = line.trim().split(' -> ');
        let parent = root;

        parts.forEach((part, index) => {
            const match = part.match(/(\w+)\((\w+)\)/);
            let nodeType, nodeName;

            if (match) {
                nodeType = match[1];
                nodeName = match[2];
            } else {
                nodeType = part;
            }

            let node = parent.links.find(n => n.nodeType === nodeType && n.nodeName === nodeName);

            if (!node) {
                node = { nodeType, nodeName };
                if (index !== parts.length - 1) {
                    node.links = [];
                }
                parent.links.push(node);
            }

            parent = node;
        });
    });

    return root;
}

const text = `
bus ->  pcc(pcc1) -> transformer -> tfm(tfm1) -> elink
                                    tfm(tfm1) -> load
        pcc(pcc1) -> transformer -> tfm(tfm2) -> load
        pcc(pcc1) -> transformer -> tfm(tfm3) -> load
bus -> load
`;

console.log(JSON.stringify(parseText(text), null, 2));
 类似资料:
  • 问题内容: 我能够通过读取Excel文件,但它会输出文本以及奇怪的字符。我需要按行读取文件,读取每一列中的数据并将其转换为JSON。 如何逐行读取xls文件? 问题答案: 函数下方将Excel工作表(XLSX格式)数据转换为JSON。您可以向函数添加promise。

  • 本文向大家介绍Javascript自定义事件详解,包括了Javascript自定义事件详解的使用技巧和注意事项,需要的朋友参考一下 Javascript自定义事件,其本质就是观察者模式(又称订阅/发布模式),它的好处就是将绑定事件和触发事件相互隔离开,并且可以动态的添加、删除事件。 下面通过实例,一步一步构建一个具体的Javascript自定义事件对象。 如:我有一个action1函数,我想每次在

  • 本文向大家介绍JavaScript中自定义事件用法分析,包括了JavaScript中自定义事件用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript中自定义事件用法。分享给大家供大家参考。具体分析如下: 在web前端开发中,很多人可能不会用到js的自定义事件,但如果是做一个相对来说比较大的项目,尤其是多人协同开发的时候,自定义事件就显得很重要了。那么,什么是js中的自

  • 我正在使用Coingecko API。但我就是无法解析数据。下面是示例数据。解析我要做的每个块。 https://api.coingecko.com/api/v3/exchanges 我使用的示例代码: null null

  • 问题内容: 我使用atocomplete.jquery插件来建议输入文本,结果得到了这个数组: 当我开始搜索从子字符串开始的东西时,它显示出数组排序如下: 我需要这样的东西: 有任何想法吗? 问题答案: 该插件可能区分大小写。尝试输入而不是。您可能将结果设置为不区分大小写。这个问题可能会有所帮助。 对于上的自定义排序函数,您可以使用任何JavaScript函数并将其作为参数传递给的方法,如下所示:

  • 问题内容: 我需要解析RSS feed(XML版本2.0)并在HTML页面中显示已解析的详细信息。 问题答案: 解析提要 使用jQuery的jFeed (不建议这样做,请参阅其他选项。) 借助jQuery的内置XML支持 使用jQuery和[Google AJAX Feed API](https://developers.google.com/feed/) 但这意味着您依赖它们在线和可访问。 建筑