使用键和清理解析嵌套字符串 - javascript

时间:2017-02-13 19:24:55

标签: javascript jquery json parsing lexer

我有一串数据需要以人类可读的格式解析和清理输出。我想使用javascript将字符串转换为键控数组,保留嵌套层次结构。

例如,我有这个字符串:

(id, foo bar,category(subCategory,location(id)), something)

我想解析这个并使用键控数组在这样的页面上输出:

<ul>
    <li>id<li>
    <li>foo bar</li>
    <li>category
        <ul>
            <li>subCategory<li>
            <li>location
                <ul>
                    <li>id</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>something</li>
</ul>

使用javascript实现此目的的最灵活方法是什么,同时还删除值和逗号之间的空格,但保留字之间的空格?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将replace与正则表达式结合使用来实现您想要的效果。替换将是:

  1. /\(/g替换'<ul><li>'(开放的parens)。 (/\s*\(\s*/g删除周围空格(如果有)
  2. /\)/g替换'</li></ul>'(关闭parens)。 (/\s*\)\s*/g删除周围空格(如果有)
  3. /,/g(逗号)替换为'</li><li>'。 (/\s*,\s*/g删除周围空格(如果有)
  4. var str = "(id, foo bar,category(subCategory,location(id)), something)";
    
    str = str.replace(/\s*\(\s*/g, '<ul><li>')
             .replace(/\s*\)\s*/g, '</li></ul>')
             .replace(/\s*,\s*/g,  '</li><li>');
    
    document.getElementById("result").innerHTML = str;
    <div id="result"></div>