【问题标题】:add/remove text multiple line for javascript为javascript添加/删除文本多行
【发布时间】:2019-10-01 16:47:46
【问题描述】:

我有需要删除/添加的多行字符串 这是我要编辑的数据

  data{
      id
      date
      ***progress{
        update
        progressStatus
      }***
      events {
        id
        time
      }
    }

我的意思是如何删除

progress{
            update
            progressStatus
          }

我曾尝试使用“替换”、“分配”将其删除,如下所示,但不起作用

  const test = data.replace(progress, '');

谢谢。

【问题讨论】:

  • 请将您尝试过的代码添加到您的问题中,作为minimal reproducible example
  • @ppppp 如果你想删除对象属性然后使用 delete data.progress;
  • 特殊字符导致问题。正则表达式可能是您的问题的解决方案。
  • 看起来像 graphql 查询,对吗?
  • @PatrickFerreira 是的

标签: javascript reactjs react-apollo


【解决方案1】:

这是逻辑,我正在考虑您要删除具有左大括号('{')和右大括号('}')的“进度”:

var data = `data{
      id
      date
      ***progress{
        update
        progressStatus
      }***
      events {
        id
        time
      }
    }`;
function _remove(data, key) {
  var s = data.indexOf(key);
  var e = ((s) => {
    for(var i=s; i<data.length; i++){
      if(data[i] == "}")
        return i;
    }
  })(s + key.length);
  console.log(data.replace(data.substr(s, e-s+1), ""));
}
_remove(data, 'progress');

也可以用正则表达式完成!

【讨论】:

    【解决方案2】:

    我有多行是什么? grapqh的查询会返回一个对象,为什么还是多个字符串?

    在你的情况下(查询数据是一个字符串),试试:

    const data = ` data{
          id
          date
          progress{
            update
            progressStatus
          }
          events {
            id
            time
          }
        }`
    const newData = data.replace(`progress{
            update
            progressStatus
          }`, '')
    console.log(newData)

    如果你想删除对象中的一个键,试试这个:

    delete data.progress;
    
    // or,
    delete data['progress'];
    
    // or,
    const prop = "progress";
    delete data[prop];
    

    演示:

    const data = {
           progress: {
              x: "x"
           },
           events: {
              id: 1
           }
        }
    
    delete data.progress
    console.log(data)

    【讨论】:

    • 输入不是 JSON 而是字符串。所以这行不通。
    • 我有多行字符串他有一个字符串,而不是一个对象
    【解决方案3】:

    你可以试试正则表达式

    const regex = /progress{[^}]+}\s+/gm;
    const str = `data{
          id
          date
          progress{
            update
            progressStatus
          }
          events {
            id
            time
          }
        }`;
    const subst = ``;
    
    // The substituted value will be contained in the result variable
    const result = str.replace(regex, subst);
    
    console.log('Substitution result: ', result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2020-06-07
      • 1970-01-01
      • 2011-06-15
      • 2017-04-11
      • 1970-01-01
      • 2012-12-02
      相关资源
      最近更新 更多