【问题标题】:How can I remove all whitespace from a string except when part of said string is surrounded by a specific character in Node?除非所述字符串的一部分被Node中的特定字符包围,否则如何从字符串中删除所有空格?
【发布时间】:2020-04-09 03:05:05
【问题描述】:

假设我们有这个字符串:

this is an example: 'this is too'

我需要这个输出:

thisisanexample:'this is too'

我需要一种能够删除字符串中的空格的方法,除非任何给定的部分都被一个字符包围,在这种情况下,'

如果有帮助,我找到了这个帖子 here,但它是在 python 中的,我几乎不知道如何翻译。

如果您想知道,这是用于数据解析器的。

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    基本上就像你提到的python一样,这段代码拆分(使用.split())字符串,然后迭代新数组并检查当前迭代的元素是否是应该删除空格的字符串的一部分(例如,索引为 [0] 的第一个元素不是 '' 内的字符串的一部分,并且检查由 % 完成,如果不是,它将在 '' 中再次添加它,最后我们 .filter()数组和.join()它的元素来得到一个新的字符串。

    所以我认为这就是你想要的:

    function splitStr(str) {
      let strArr = str.split("'");
      let newStr = "";
      strArr.forEach((el, i) => {
        if(i % 2 === 0) {
          strArr[i] = el.replace(/\s/g, '');
        }
        else {
          strArr[i] = `'${strArr[i]}'`;
        }
      })
      return strArr.filter(String).join('');
    }
    
    let str = "this is an example:'this is too'";
    console.log(splitStr(str));
    let str1 = "('test 2': 'the result' )";
    console.log(splitStr(str1));
    
    let str2 = "('test 2': the result )";
    console.log(splitStr(str2));

    【讨论】:

    • 你能告诉我们 i % 2 == 0 的原因吗?
    • @snr 好的,我只是添加解释。
    • 非常感谢!我正在用('test 2': 'the result' ) 对其进行测试,它按预期给了我'test 2':'the result'
    【解决方案2】:

    您可以使用trim() 方法、ternary operator & 和这个性感的单线来完成此行为:

    const trimString = str => str[0] == "'" ? str : str.trim()
    
    trimString('\'  John Snow  \'')
    trimString('  John Summer ')
    

    检查this working code sample

    【讨论】:

    • 这非常有用,但不是我所需要的。我需要它来删除所有空格,除了被所述字符(')包围的空格,如果它以'开头,它只会返回自身。
    • 在这种情况下,您需要使用split() 方法将string 转换为array,创建function 以删除第一个和最后一个字符并使用join()array 再次转换为string 的方法。
    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 2016-01-02
    • 2010-12-04
    • 2011-10-19
    • 1970-01-01
    • 2011-08-24
    • 2023-04-08
    相关资源
    最近更新 更多