当前我有这个字符串:
"Hello, I'm <%first%> <%last%>, and I <3 being a <%occupation%>. I am > blah";
如何将它分割成一个对象数组,形式如下:
[
{ type: 'string', value: 'Hello, I'm ' },
{ type: 'token', value: 'first' },
{ type: 'string', value: ' ' },
{ type: 'token', value: 'last' },
{ type: 'string', value: ', and I <3 being a ' },
{ type: 'token', value: 'occupation' },
{type: 'string', value: 'I am > blah'}
]
字符串的模式是:如果我们找到一个看起来像这样的单词:<%word%>,那么我们将其作为类型为token的对象放入数组中。否则,我们将其作为类型为string的对象放入数组中。我的问题是如何在代码中实现它。
我很难形成短语,该短语将成为键值对中的值。下面是我试图实现的代码,但它是有缺陷的。 我的想法是有一个空的word变量,当它遍历字符串时,会将单词连接起来形成短语。一旦它看到它在<%和%>之间,它就会被赋予类型token并推入arrStr数组中。
然而有两个问题:1) 看起来每次迭代字符串从"H"到"He"到"Hel"到"Hell"到"Hello"都被生成了。2) 似乎它从未接触到token。3) "hello"中的第一个"h"被省略了。
我该如何在不使用正则表达式的情况下完成此操作?