Разбор лога с помощью JavaScript - PullRequest
1 голос
/ 05 марта 2012

Мне нужно извлечь только "40: 37.298s" из:

Total time: 40:37.298s

с использованием JS, но я новичок в JS, может кто-нибудь помочь?

Ответы [ 7 ]

6 голосов
/ 05 марта 2012
> 'Total time: 40:37.298s'.substr(12)
'40:37.298s'

Если вы хотите использовать регулярные выражения для большей гибкости:

> /([0-9]+:[0-9]+\.[0-9]+s)/.exec('Total time: 40:37.298s')[1]
'40:37.298s'
2 голосов
/ 05 марта 2012

Есть много способов сделать это. Вот один из них:

var str = "Total time: 40:37.298s";
str.split(": ")[1]

В большинстве случаев я предпочитаю разбивать некоторые известные точки, а не пытаться извлечь конкретную подстроку (как показали другие) по следующим причинам:

  • Это более гибко; это все равно будет работать, если первая часть строки содержит небольшие вариации (но метод подстроки не будет)
  • Проще увидеть, что извлекается (но метод подстроки требует, чтобы я вручную подсчитывал позиции в строке, чтобы убедиться, что я выбираю правильную вещь)
1 голос
/ 05 марта 2012
var time = 'Total time: 40:37.298s';

time = time.match(/\d{1,2}:\d{1,2}\.\d+s/);

http://jsfiddle.net/ypzgJ/

0 голосов
/ 05 марта 2012

Я бы сказал, используйте RegEx, как [:\.0-9]*s

, например,

yourText.match("regex")

, в вашем случае это будет

"Total time: 40:37.298s".match("[:\.0-9]*s")[0]

Возвращается 40:37.298s

0 голосов
/ 05 марта 2012
var item = 'Total time: 40:37.298s';
var pattern = /\d{1,2}\:\d{2}\.\d{3}s/g;
var res = pattern.exec(item);

То есть:

  • \ d {1,2} одна или две цифры
  • \: символ ':'
  • \ d {2} две цифры
  • . "." символ
  • \ d {3} три цифры
  • s 's' char
0 голосов
/ 05 марта 2012
var result = "Total time: 40:37.298s".replace(/^.*([0-9]{2}:[0-9]{2}\.[0-9]{3}s)/g,'$1')
0 голосов
/ 05 марта 2012

метод подстроки - это то, что вы ищете:

"Total time: 40:37.298s".substring("Total time: ".length);
...