我正在尝试将字符串转换为以某种方式的输出,我认为最好的方法是使用模式匹配,但我遇到了一些问题。我不想分解字符串,然后将其串联。我希望有一种更简单的方法。我也遇到(id)的问题,似乎字面的字符串在(id,)lastname接收到替换值
var myFunction - function(){
var str = "id,created,employee(id,firstname,employeeType(id), lastname),location";
var str2="id, created, employee";
var str3 = "(id,firstname,employeeType";
var str4="(id)";
var str5 ="lastname)";
var str6 = "location";
var test = str2.replace(/[,]/g, '<br>rn').split(",");
var test1 = str3.replace(/[(/,]/g, '<br>-rn').split(",");
var test2 =str4.replace(/[()/,]/g, '<br />--rn').split(",");
var test3 = str5.replace(/[,/)]/g, '<br />').split(",");
var test4 = str6.replace(/[)/,]/g, '<br />').split(",");
var result =test + test1 + test2 + test3 + test4 ;
var match = result.split(',')
document.getElementById("myDemo").innerHTML = match.join("<br />");;
}
myFunction()
我的输出看起来像
id
created
employee
- id
- firstname
- employeeType
-- id
-- lastname this should only be one dash not two
location
我在做什么错?
这是一种在弦字中遍历一个字符的方式。当遇到(
或)
时,计数器会增加或减少,以指示应该有多少个-
字符。
var stringFormatter = function() {
var str = "id,created,employee(id,firstname,employeeType(id), lastname),location";
var formatted = '';
var indentCount = 0;
var chars = str.split('');
chars.forEach(function(char) {
if (char == '(') {
indentCount++;
} else if (char == ')') {
indentCount--;
}
if (char == ',' || char == '(') {
formatted = formatted.concat('<br/>');
for (var i = 0; i < indentCount; i++ ) {
formatted = formatted.concat('-');
}
} else if (char != '(' && char != ')') {
formatted = formatted.concat(char);
}
});
document.getElementById("myDemo").innerHTML = formatted;
}
stringFormatter();
输出看起来像:
id
created
employee
-id
-firstname
-employeeType
--id
- lastname
location
对于任何嵌套级别,您都可以使用此
var myFunction = function(){
var str = "id,created,employee(id,firstname,employeeType(id), lastname),location";
while(/([^()]+)/g.test(str))
{
m = /(([^()]+))/g.exec(str);
m[1] = m[1].replace(/(-+)/g,"-$1");
m[1] = m[1].replace(/,/g,"-");
str = str.replace(/(([^()]+))/,'-'+m[1]);
}
str = str.replace(/,/g,'<br>rn');
str = str.replace(/(-+)/g,'<br>$1 rn');
document.getElementById("myDemo").innerHTML += str + '</br>';
}
myFunction();
输出:
id
created
employee
- id
- firstname
- employeeType
-- id
- lastname
location
请参阅更多嵌套级别的结果
var str = "id,created,employee(id,firstname,contact(Mobile,Landline(home,office)),employeeType(id), lastname),location";
...
输出:
id
created
employee
- id
- firstname
- contact
-- Mobile
-- Landline
--- home
--- office
- employeeType
-- id
- lastname
location