使用字符匹配操作和剪切字符串的最佳方法是什么?

时间:2017-02-24 15:45:01

标签: javascript jquery regex string substring

所以在我的例子中,我们有这样的字符串: 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来修剪结束(因为它只会发生在本周的几周中)并且最后切断直到那一点,但我不确定如何接近像这样切掉一部分字符串。

2 个答案:

答案 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]
}));