【问题标题】:How to separate a substring in a complicate string in JavaScript?如何在 JavaScript 中分离复杂字符串中的子字符串?
【发布时间】:2020-11-28 02:07:43
【问题描述】:

例如:

str = "A=sample_text1; B=sample_text2; C=sample_text3;";

如何获取“A=”之后的文本,即“sample_text1”? (sample_text1 的长度可以很长,所以 str.substring 在这里不起作用)

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    看起来你的字符串有一个结构,其中有多个字段,每个字段表示为:

    [KEY]=[VALUE];
    

    您可以使用常见的字符串和数组方法,如split 和map 来提取您需要的内容。在这种情况下,您似乎想要第一个字段的值:

    const str = 'A=sample_text1; B=sample_text2; C=sample_text3;';
    
    const result = str.split(';').map(s => s.split('=').pop().trim()).shift();
    
    console.log(result); //=> 'sample_text1'
    

    【讨论】:

      【解决方案2】:

      https://regexr.com 对于创建和测试正则表达式非常有用。

      const match = "A=sample_text1; B=sample_text2; C=sample_text3;".match(/A=([^;]*)/);
      let value = match !== null ? match[1] : undefined;
      

      在这种情况下,您可以获取A 的值

      【讨论】:

        【解决方案3】:

        您可以使用正则表达式来捕获被= 和; 包围的每个组:

        const str = "A=sample_text1; B=sample_text2; C=sample_text3;";
        const regexp = "=(.*?);";
        const values = [...str.matchAll(regexp)];
        const aValue = values[0][1];
        console.log(aValue);

        【讨论】:

          【解决方案4】:

          这可能有点矫枉过正,但要轻松访问所有键/值,您可以使用Object.fromEntries:

          let str = "A=sample_text1; B=sample_text2; C=sample_text3;";
          
          let values = Object.fromEntries(
            str
            // Split all the pairs
            .split(";") 
             // Remove the last empty element
            .slice(0,-1)
            // map to a [key, value] array to pass to Object.fromEntries
            .map(i => i.split("=").map(j => j.trim()))); 
          
          // get a value using a key
          console.log(values["A"]) // sample_text1
          
          // check if a key is present
          console.log("C" in values) // true
          console.log("D" in values) // false

          它看起来比 cmets 和控制台日志更长,它可以放在一行中。

          请注意,这当然是假设字符 = 或 ; 都不能成为键或值的一部分。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-19
            • 2015-11-20
            • 1970-01-01
            • 2013-04-13
            • 2015-09-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多