Получение текста между двумя одинаковыми символами
Добрый день, помогите разобраться как правильно выдернуть нужное из текста.
Есть массив с нужным текстом: var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг']; Нужно вытянуть текст между ':тест:' Конкретно строку можно вытянуть так: alert(getSubStr('пчелка жопка вес:0,02:кг', ':')); function getSubStr(str, delim) { var a = str.indexOf(delim); if (a == -1) return ''; var b = str.indexOf(delim, a+1); if (b == -1) return ''; return str.substr(a+1, b-a-1); } А как весь массив вытянуть таким образом?:-? Пробовал так, но где то ошибся, выходит только первая строка: var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг']; alert(getSubStr(arr, ':')); function getSubStr(str, delim) { for( var i = 0; i < str.length; ++i ){ var a = str[i].indexOf(delim); if (a == -1) return ''; var b = str[i].indexOf(delim, a+1); if (b == -1) return ''; return str[i].substr(a+1, b-a-1); } }; |
var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг']; alert(/\d,\d+/.exec(arr[1])) |
Цитата:
var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг']; alert(getSubStr(arr)); function getSubStr(str) { for( var i = 0; i < str.length; ++i ){ var r = /\d,\d+/.exec(str[i]); return r; } }; опять выходит только одно значение, для пояснения нужен вид : alert('0,02, 0,0001, 0,00001'); |
Цитата:
Помещайте все найденное циклом в массив и возвращайте массив, получится нужное. |
И как
/\d,\d+/.exec(arr)понимает где у меня там двоеточие? магия какая то :blink: |
Цитата:
var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг']; var num = arr.map(function(e) { return /\d,\d+/.exec(e) }) alert(num) |
Цитата:
var arr = ['пчелка жопка 1,1 вес:0,02:кг', 'одуванчик тараканчик 1,2 вес:0,0001:кг', 'блошка махнушка 1,3 вес :0,00001:кг']; var num = arr.map(function(e) { return /\d,\d+/.exec(e) }) alert(num) |
Если еще есть, тогда можно так:
var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик 1,1 тараканчик вес:0,0001:кг', 'блошка махнушка 3,56 вес :0,00001:кг']; var num = arr.map(function(e) { return /:(\d+,\d+):/.exec(e)[1] }) alert(num.join('\n')) |
laimas,
Идеально, спасибо :yes: |
Часовой пояс GMT +3, время: 20:14. |