【问题标题】:parse nested string with keys and sanitization - javascript使用键和清理解析嵌套字符串 - javascript
【发布时间】:2017-07-01 21:42:07
【问题描述】:

我有一串数据需要解析和清理,以便以人类可读的格式输出。我想使用 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 实现此目的最灵活的方法是什么,同时删除值和逗号之间的空格,但保留单词之间的空格?

谢谢!

【问题讨论】:

  • 请阅读How to Ask。关键词:“搜索和研究”和“解释......任何阻碍你自己解决的困难”。
  • 我猜你可以使用split方法,你的解决方案应该是一种递归,解析文本不是一个简单的操作,不能低估它。
  • 这和词法有什么关系?

标签: javascript jquery json parsing lexer


【解决方案1】:

您可以使用replace 和正则表达式来实现您想要的。替换将是:

  1. /\(/g(左括号)替换为'&lt;ul&gt;&lt;li&gt;'。 (/\s*\(\s*/g 删除周围的空间(如果有)
  2. /\)/g(关闭括号)替换为'&lt;/li&gt;&lt;/ul&gt;'。 (/\s*\)\s*/g 删除周围的空间,如果有的话)
  3. /,/g(逗号)替换为'&lt;/li&gt;&lt;li&gt;'。 (/\s*,\s*/g 删除周围的空间(如果有)

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;
&lt;div id="result"&gt;&lt;/div&gt;

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多