从字符串中提取字符串的部分 javascript

Extracting sections of a string from a string javascript

我这里有这个字符串:

var string1 = 'Hello. My name is Bob! I love cats!'

我需要使用模板字符串作为一种参考从字符串中提取名称。

模板字符串应如下所示:

var extract = 'name is *! I'

在这种情况下,该函数将 return ['Bob']。

星号表示可能的输入值。我知道可能有更好的方法来解决这个问题,但我想知道是否有办法做到这一点。

这是使用不同 'template':

的预期输出示例
var extract1 = 'have * kids.'
var string1 = 'I am 32 years old. I have 2 kids.'

extract(string1, extract1) //Should return ['2'] or ['have 2 kids.']

//Or, . . .

var extract1 = 'have * kids.'
var string1 = 'I am 32 years old. I have 1+1 kids.'

extract(string1, extract1) //Should return ['1+1'] or ['have 1+1 kids.']

//An optional delimiter parameter could be passed: extract(str1, str2, '*')

您可以为此使用正则表达式。

例如,您要对

进行提取
var extract1 = 'have * kids.'
var regex = /have .* kids./
var string1 = 'I am 32 years old. I have 2 kids.'
var s = string1.match(regex)
// have 2 kids.

var extract1 = 'have * kids.'
var regex = /have .* kids./
var string1 = 'I am 32 years old. I have 1+1 kids.'
var s = string1.match(regex)
// have 1+1 kids.

您可以使用 RegExp 提取必要的字符串。

如果您需要将其作为接受两个字符串参数的函数,您可以简单地用 (.*) 替换(在掩码参数内)星号 (*) 以匹配任意数量的字符在捕获组中并针对您的输入字符串和 return 进行 RegExp out of it to String.prototype.match() 第一个匹配的子字符串:

const testStr = 'I am 32 years old. I have 2 kids.',
      ageMask = 'I am * years old',
      childrenMask = 'I have * kids',
      
      extract = (str, mask) => 
        str.match(new RegExp(mask.replace('*', '(.*)')))[1]
        
console.log('Age is: :', extract(testStr, ageMask))        
console.log('Children: :', extract(testStr, childrenMask))
.as-console-wrapper{min-height:100%;}