02.04.2018, 08:31
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Получение текста между двумя одинаковыми символами
Добрый день, помогите разобраться как правильно выдернуть нужное из текста.
Есть массив с нужным текстом:
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);
}
};
Последний раз редактировалось Artur_Hopf, 02.04.2018 в 08:33.
|
|
02.04.2018, 09:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг'];
alert(/\d,\d+/.exec(arr[1]))
|
|
02.04.2018, 09:20
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Сообщение от laimas
|
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');
|
|
02.04.2018, 09:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Artur_Hopf
|
опять выходит только одно значение
|
Ну так у вас функция возвращает первое же найденное - выход из функции.
Помещайте все найденное циклом в массив и возвращайте массив, получится нужное.
|
|
02.04.2018, 09:24
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
И как
/\d,\d+/.exec(arr)
понимает где у меня там двоеточие? магия какая то
|
|
02.04.2018, 09:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Artur_Hopf
|
понимает где у меня там двоеточие?
|
А оно нужно? Если текст содержит еще значения с запятой, кроме тех что нужны, тогда да, можно чем либо отметить границы нужного, а если только одно, то зачем эти двоеточия? По крайней мере в данном случае для поиска числа они не нужны.
var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг'];
var num = arr.map(function(e) {
return /\d,\d+/.exec(e)
})
alert(num)
|
|
02.04.2018, 09:39
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Сообщение от laimas
|
А оно нужно? Если текст содержит еще значения с запятой, кроме тех что нужны, тогда да, можно чем либо отметить границы нужного, а если только одно, то зачем эти двоеточия? По крайней мере в данном случае для поиска числа они не нужны.
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)
|
|
02.04.2018, 09:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Если еще есть, тогда можно так:
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'))
|
|
02.04.2018, 09:49
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
laimas,
Идеально, спасибо
|
|
|
|