JavaScript:从表配置字符串中提取列标题

JavaScript: extract column headers from table configuration string

本文关键字:提取 标题 字符串 配置 JavaScript      更新时间:2024-03-03

我需要帮助在Javascript中获取一些字符串操作。我有一个样本字符串作为

var str = 'Supplier^supp^left^string*Spend (USD MM)^spend^right^number^5';

该字符串基本上是一个portlet的配置,包含两列,即Supplier和Spend。。我必须从这个字符串中获取列名。每个星都遵循一个新的列配置。在这种情况下,只有2列的配置,因此在我的字符串中只有1颗星。假设如果有2列,字符串将看起来像

var str = 'Supplier (Name)^Supplier^left^string*Spend (USD MM)^Spend^right^number^5*Location (Area)^Loc^right^string^*Category ^Categ^right^string';

因此,根据上面的字符串,我编写了一个逻辑,以获得所需的字符串在第二个插入符号"Spend"之后,我想要"Supplier"(第一列数据名称,而不是"Supplier(name)",这是一个显示名称),(移动到星号后面的第二列)。类似地,"Loc"(第三列)和"Categ"(第四列)。有人能帮我做到这一点吗?这是我写的

    function getColNamesfromConfig(str) {
        var i = str.indexOf('^');
        var tmpCatStr = str.slice(i + 1);
        var catField = tmpCatStr.slice(0, tmpCatStr.indexOf('^'));
        var j = tmpCatStr.indexOf('*');
        var tmpStr = tmpCatStr.slice((j + 1));
        var k = tmpStr.slice(tmpStr.indexOf('^') + 1);
        var valField = k.slice(0, k.indexOf('^'));
        return { categoryField: catField, valueField: valField };
    }

您可以使用split()

str.split('*')[0].split('^')[1]

上面的代码会给你

Supplier

检查以下链接

或者使用正则表达式:

   function headers(s) {
      var re = /([^^]+)(?:[^*]+[*]?)?/g, names=[];
      while (match = re.exec(s)) {
        names.push(match[1]);
      }
      return names;
   }

输出["Supplier","Spend (USD MM)","Location (Area)","Category "]["Supplier (Name)","Spend (USD MM)","Location (Area)","Category "]对于您的两个示例

请参阅实际操作(JSFiddle)。