2017-02-24 6 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

regexを使ってそれらを抽出することができます。毎日が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

そうだと思います。 @ビッツは幸せに助ける! – baao

1

が代わりに不要な部分を削除する、あなたはちょうどあなたが望むものと一致することができることを使用することができます。

次の正規表現^.{15}(\w+?y)は、文字列の先頭から15文字に一致し、次にグループ1の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] 
 
}));

関連する問題