所以在我的例子中,我们有这样的字符串:
CP1_ctl05_RCBPAThursdayStartTimePicker_0_dateInput
CP1_ctl05_RCBPAFridayStartTimePicker_3_dateInput
CP1_ctl05_RCBPAMondayStartTimePicker_1_dateInput
任务是从字符串中提取一周中的几天。
我已经想过你可以修剪第一组字符CP1_ctl05_RCBPA
,因为它们总是具有相同的长度并且总是出现在相同的位置。使用string.substr(15)
,我能够将字符串缩减为FridayStartTimePicker_3_dateInput
,但我不知道如何删除其余的后缀垃圾文本。
我正在考虑通过找到第一个发生的y来修剪结束(因为它只会发生在本周的几周中)并且最后切断直到那一点,但我不确定如何接近像这样切掉一部分字符串。
答案 0 :(得分:1)
您可以使用正则表达式来提取它们。由于每天以y
结尾,并且没有一天在y之间,您可以简单地将其用作分隔符
const regex = /\w{15}(\w+y).*/g;
const str = `CP1_ctl05_RCBPAThursdayStartTimePicker_0_dateInput`;
const subst = `\$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
答案 1 :(得分:1)
您可以匹配您想要的内容,而不是删除不需要的部分。
以下正则表达式^.{15}(\w+?y)
匹配字符串开头的任何字符,然后匹配并在第1组中捕获一个或多个单词字符,而不是贪婪字母y
。必须使用非贪婪的?
,除非它在字符串中存在的最后 y
之前匹配。
然后我们必须获取第一组的内容并分配给变量day
var test = [
'CP1_ctl05_RCBPAThursdayStartTimePicker_0_dateInput', 'CP1_ctl05_RCBPAFridayStartTimePicker_3_dateInput', 'CP1_ctl05_RCBPAMondayStartTimePicker_1_dateInput'
];
console.log(test.map(function (a) {
return a.match(/^.{15}(\w+?y)/)[1]
}));