gpt4 book ai didi

javascript - 根据特定字符获取整个字符串或子字符串

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:24 25 4
gpt4 key购买 nike

我有一个包含 MIME 类型的字符串,比如 application/json。现在我想将其与实际的 HTTP header 进行比较,在本例中为 content-type

如果 header 包含 MIME 类型,那么就很简单:

if (mimeType === contentType) { ... }

不幸的是,标题可能包含额外的参数。它们总是跟在我感兴趣的值之后,它们之间用 ; 隔开。例如,它可以是 application/json; charset=UTF-8.

所以现在基本上我需要运行:

if (mimeType === contentType.substring(0, contentType.indexOf(';'))) { ... }

问题是第一种情况仍然可能发生,所以现在我们有:

if (mimeType === contentType ||
mimeType === contentType.substring(0, contentType.indexOf(';'))) { ... }

事情开始变得冗长......

我可以考虑使用

if (mimeType === contentType.substring(0, mimeType.length)) { ...}

但这也会成功匹配值 application/jsonformatter(这是不需要的)。

所以,长话短说:有没有比我上面描述的冗长的 if 更好的方法来比较这些值,例如使用正则表达式?

基本上,我正在考虑根据以下规则在必要时缩短 header 的表达式:

  • 如果包含分号,则返回分号之前的部分。
  • 如果不包含分号,则返回所有内容。

什么是最有效的写法?

最佳答案

您可以使用正则表达式匹配:

if ( mimeType.match(/^application\/json(?= *;|$)/i) ) {
// matched
}

RegEx Demo

这里 (?= *;|$) 是正向前瞻,它将确保搜索到的字符串 application/json 后跟可选空格和 否则它是输入中唯一的字符串。

关于javascript - 根据特定字符获取整个字符串或子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com