次のような文字列があります。
S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009)R[5](117.1900) V[0](0.0000) Up(22-04-2009)
値を取得する必要があります: 22-04-2009
次のような文字列があります。
S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009)R[5](117.1900) V[0](0.0000) Up(22-04-2009)
値を取得する必要があります: 22-04-2009
試す
'S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009) R5 V0 Up(22-04-2009)'
.match(/Up\(.+\)/g);
ここでは、一致した値の配列を返します["Up(22-04-2009)"]
値は次のとおりです。
'S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009) R5 V0 Up(22-04-2009)'
.match(/Up\(.+\)/g)[0].split(/\(|\)/)[1];
または
'S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009) R5 V0 Up(22-04-2009)'
.match(/Up\(.+\)/g)[0].replace(/Up\(|\)/g,'');
文字列に 'Up(...)' が存在するかどうかわからない場合:
( 'S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009) R5 V0 Up(22-04-2009)'
.match(/Up\(.+\)/g) || ['not found'][0] )
.replace(/Up\(|\)/g,'');
match
正規表現を簡単に取得したり、特定の (または計算された) 位置から取得したりできますが、正規表現と で解析substring
してみましょう。split
var str = "S(08-01-2008) I[18] ф4(579.1900 UAH) E(05-07-2009)R[5](117.1900) V[0](0.0000) Up(22-04-2009)";
var parts = str.split(/\s*\(\s*(.+?)\s*\)\s*/);
var map = {};
for (var i=0; i+1<parts.length; i+=2)
map[parts[i]] = parts[i+1];
これで、マップから「Up」値を取得できます
return map["Up"]; // "22-04-2009"
他の回答とは対照的に、これはundefined
、例外をスローする代わりに、文字列に「Up」値がない場合に発生します。また、必要に応じてマップから他の値を取得することもできます。たとえばmap["I[18] ф4"]
is"I[18] ф4"
です。
extract = yourString.substr( -11,10);
最後から数えて11番目から始まる10文字を抽出します。
これは、up 値が常に入力文字列の末尾にあることを前提としています。
これは、正規表現や、値が 1 つだけ必要な場合の分割ソリューションよりもはるかに高速です。
より多くの例: http://www.bennadel.com/blog/2159-Using-Slice-Substring-And-Substr-In-Javascript.htm