【问题标题】:Best way to manipulate and cut a string using character matching?使用字符匹配操作和剪切字符串的最佳方法?
【发布时间】:2017-02-24 15:45:00
【问题描述】:

所以在我的示例中,我们的字符串如下所示: 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 来修剪结尾(因为在这种情况下它只会出现在一周的几天中)并在此之前切掉结尾,但我不确定如何处理像这样切掉字符串的一部分。

【问题讨论】:

  • 使用 regex .

标签: javascript jquery regex string substring


【解决方案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);

【讨论】:

  • 谢谢,这行得通!比修剪和剪断字符串更优雅(并且可能在性能方面更好)!
  • 我认为是的,是的。 @Bitz 乐于助人!
【解决方案2】:

您可以只匹配您想要的部分,而不是删除不需要的部分。

以下正则表达式 ^.{15}(\w+?y) 匹配字符串开头的 15 个任意字符,然后匹配并在第 1 组中捕获一个或多个不贪婪的单词字符,然后是字母 y。必须使用 not greedy ?,除非它匹配到字符串中存在的 last 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]
}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-11
    • 2010-12-24
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2020-12-31
    • 2016-04-19
    相关资源
    最近更新 更多