【问题标题】:Change text at many indices in Javascript在 Javascript 中更改许多索引处的文本
【发布时间】:2017-05-03 16:58:39
【问题描述】:

我有以下来自长查询并尝试构建工具的示例:

var str =" SELECT 
             'Capital Return' AS Portfolio_Classification
            , '(Gross)' AS Portfolio_Type
            , '0.21%' AS Portfolio_Value
            , '' AS Benchmarks_Classification
            , '' AS Benchmarks_Comment
            , '' AS Benchmarks_Value
FROM hfhgjdfgj
WHERE number= 3
        UNION
        SELECT 
             'Capital Return' AS Portfolio_Classification
            , '(Net)' AS Portfolio_Type
            , '0.21%' AS Portfolio_Value
            , '' AS Benchmarks_Classification
            , '' AS Benchmarks_Comment
            , '' AS Benchmarks_Value"
FROM asdfasdf
WHERE 1=1

我试图在出现在 AS 之后的字符串后面加上单引号,如下所示:

     var str =" SELECT 
             'Capital Return' AS 'Portfolio_Classification'
            , '(Gross)' AS 'Portfolio_Type'
            , '0.21%' AS 'Portfolio_Value'
            , '' AS 'Benchmarks_Classification'
            , '' AS 'Benchmarks_Comment'
            , '' AS 'Benchmarks_Value'
FROM hfhgjdfgj
WHERE number= 3
        UNION
        SELECT 
             'Capital Return' AS 'Portfolio_Classification'
            , '(Net)' AS 'Portfolio_Type'
            , '0.21%' AS 'Portfolio_Value'
            , '' AS 'Benchmarks_Classification'
            , '' AS 'Benchmarks_Comment'
            , '' AS 'Benchmarks_Value'"
FROM asdfasdf
WHERE 1=1

我尝试获取“AS”+1 的所有索引并将其设置为“AS '”,但仍然遇到单词结尾没有单引号的问题。浏览了 Lodash 和 Vanilla Javascript,但进入循环。

有人有什么建议吗?

【问题讨论】:

    标签: javascript jquery lodash


    【解决方案1】:

    你想要这样的东西:

    var str =" SELECT 'Capital Return' AS Portfolio_Classification , '(Gross)' AS Portfolio_Type , '0.21%' AS Portfolio_Value , '' AS Benchmarks_Classification , '' AS Benchmarks_Comment , '' AS Benchmarks_Value FROM hfhgjdfgj WHERE number= 3 UNION SELECT 'Capital Return' AS Portfolio_Classification , '(Net)' AS Portfolio_Type , '0.21%' AS Portfolio_Value , '' AS Benchmarks_Classification , '' AS Benchmarks_Comment , '' AS Benchmarks_Value";
    
    str = str.split(' ');
    
    for(var i = 0; i < str.length; i++){
        if(i != 0 && str[i-1] == "AS"){
            str[i] = '\'' + str[i] + '\'';
        }
    }
    
    str = str.join(' ');
    

    【讨论】:

      【解决方案2】:

      使用正则表达式。搜索单词“as”、一个或多个空格和一个由 [a-z0-9_-] 组成的单词。然后返回引用的结果。

      var str = `SELECT 
                   'Capital Return' AS Portfolio_Classification
                  , '(Gross)' AS Portfolio_Type
                  , '0.21%' AS Portfolio_Value
                  , '' AS Benchmarks_Classification
                  , '' AS Benchmarks_Comment
                  , '' AS Benchmarks_Value
      FROM hfhgjdfgj
      WHERE number= 3
              UNION
              SELECT 
                   'Capital Return' AS Portfolio_Classification
                  , '(Net)' AS Portfolio_Type
                  , '0.21%' AS Portfolio_Value
                  , '' AS Benchmarks_Classification
                  , '' AS Benchmarks_Comment
                  , '' AS Benchmarks_Value"
      FROM asdfasdf
      WHERE 1=1
      `;
      
      var result = str.replace(/as\s+([a-z0-9_-]+)/gi, function(_, s) {
        return "AS '" + s + "'";
      });
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 2013-05-21
        • 1970-01-01
        • 2019-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-18
        相关资源
        最近更新 更多