2017-02-24 22 views
0

所以在我的例子中,我们有看起来像这样的字符串: 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(因为它只会发生在这种情况下的一周中的几天)并将结束切掉直到该点,但我不确定如何方法切割像这样的字符串的一部分。

+1

使用正则表达式*。* – m87

回答

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);

+0

谢谢,这个作品!比修剪和剪切字符串更优雅(可能更好的性能)! – Bitz

+0

我认为是的,是的。 @Bitz乐于帮忙! – baao

1

不用删除不需要的部分,你可以只匹配你想要什么。

以下正则表达式^.{15}(\w+?y)匹配15从字符串开头的任何字符然后在组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] 
 
}));

相关问题