0

次のような文字列があります。

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

4

3 に答える 3

3

試す

'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,'');
于 2012-08-30T11:35:51.820 に答える
1

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"です。

于 2012-08-30T11:47:04.547 に答える
1
extract = yourString.substr( -11,10);

最後から数えて11番目から始まる10文字を抽出します。

これは、up 値が常に入力文字列の末尾にあることを前提としています。

これは、正規表現や、値が 1 つだけ必要な場合の分割ソリューションよりもはるかに高速です。

より多くの例: http://www.bennadel.com/blog/2159-Using-Slice-Substring-And-Substr-In-Javascript.htm

于 2012-08-30T11:38:58.483 に答える