javascript中的字符串解析

string parsing in javascript

本文关键字:字符串 javascript      更新时间:2023-09-26

我有一个这样的字符串:

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,'');
extract = yourString.substr( -11,10);

它将从第11个字符开始提取10个字符。

这假设up值总是在输入字符串的末尾。

这个比regex快得多,或者如果只需要一个值,就可以拆分解决方案。

更多示例:http://www.bennadel.com/blog/2159-Using-Slice-Substring-And-Substr-In-Javascript.htm

您可以很容易地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];

现在,您可以通过从地图中获得"向上"值

return map["Up"]; // "22-04-2009"

与其他答案相反,如果字符串中没有"Up"值而不是抛出异常,则会导致undefined。此外,如果需要,还可以从映射中获取其他值,例如map["I[18] ф4"]就是"I[18] ф4"