我尝试将字符串转换为输出,以某种方式使用替换,但有问题



我正在尝试将字符串转换为以某种方式的输出,我认为最好的方法是使用模式匹配,但我遇到了一些问题。我不想分解字符串,然后将其串联。我希望有一种更简单的方法。我也遇到(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

最新更新