从字符串中提取字符串的部分 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%;}
我这里有这个字符串:
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%;}