【问题标题】:Grab substring after and before two specific characters in javascript在javascript中两个特定字符之后和之前获取子字符串
【发布时间】:2022-01-09 20:09:40
【问题描述】:

我有一个这样的 url 搜索键: ?retailerKey=A 我想获取retailerKey 子字符串。我看到的所有示例都以如何在 char 之前使用 indexOf 示例为例。我怎样才能实现这个从字符串中获得这个子字符串?retailerKey=A

【问题讨论】:

  • 我已经阅读了您的问题两次,但仍然不知道您想要的输出是什么。你能澄清一下吗?
  • 除此之外,使用URLSearchParams怎么样?

标签: javascript indexing substring


【解决方案1】:

您可以split() 任何?= 上的字符串,并从结果数组中取出中间项([1])。

const data = "?retailerKey=A";
const result = data.split(/[\?=]/)[1];

console.log(result);

如果你有多个参数,创建一个对象fromEntries() 会很有趣。

const data = "?retailerKey=A?otherKey=B";

const keyVals = data.split(/[\?=]/).filter(x => x); // keys and values
const result = Object.fromEntries(keyVals.reduce((acc, val, i) => {
  // create entries
  const chunkI = Math.floor(i / 2);
  if (!acc[chunkI]) acc[chunkI] = [];
  acc[chunkI].push(val);
  return acc;
}, []));

console.log(result);

【讨论】:

    【解决方案2】:

    使用正则表达式。 以下将返回字符 ?= 之间的值

    var result =  "?retailerKey=A".match(/\?(.*)\=/).pop();
    console.log(result);

    【讨论】:

      【解决方案3】:

      如果您希望始终获取查询符号和等号之间的字符串 ?ThisString= 那么你可以简单地使用 indexOf 例如

      str.slice(str.indexOf('?')+1,str.indexOf('='))
      

      【讨论】:

        【解决方案4】:

        使用库可能是更好的选择,但要从头开始:我建议将 split 与正则表达式一起使用。

        // split for char equals to ? or & or =;
        const url = '/toto?titi=1&tata=2';
        const args = url.split(/[\?\&\=]/);
        // shift the first element of the list since it the base url before "?"
        args.shift();
        
        // detect malformed url
        if (args.length % 2) {
            console.error('malformed url', args);
        }
        
        const dictArgs = {};
        
        for (let i = 0; i < args.length /2; i ++) {
             const key = args[2*i];
             const val = args[2*i+1];
             dictArgs[key] = val;
        }
        
        console.log(dictArgs);
            
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-10
          • 1970-01-01
          • 2021-12-01
          • 2016-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多