Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2018, 08:31
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2018, 09:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг'];

alert(/\d,\d+/.exec(arr[1]))
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2018, 09:20
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 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');
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2018, 09:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Artur_Hopf
опять выходит только одно значение
Ну так у вас функция возвращает первое же найденное - выход из функции.

Помещайте все найденное циклом в массив и возвращайте массив, получится нужное.
Ответить с цитированием
  #5 (permalink)  
Старый 02.04.2018, 09:24
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

И как
/\d,\d+/.exec(arr)
понимает где у меня там двоеточие? магия какая то
Ответить с цитированием
  #6 (permalink)  
Старый 02.04.2018, 09:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Artur_Hopf
понимает где у меня там двоеточие?
А оно нужно? Если текст содержит еще значения с запятой, кроме тех что нужны, тогда да, можно чем либо отметить границы нужного, а если только одно, то зачем эти двоеточия? По крайней мере в данном случае для поиска числа они не нужны.

var arr = ['пчелка жопка вес:0,02:кг', 'одуванчик тараканчик вес:0,0001:кг', 'блошка махнушка вес :0,00001:кг'];

var num = arr.map(function(e) {
    return /\d,\d+/.exec(e)
})

alert(num)
Ответить с цитированием
  #7 (permalink)  
Старый 02.04.2018, 09:39
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 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)
Ответить с цитированием
  #8 (permalink)  
Старый 02.04.2018, 09:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Если еще есть, тогда можно так:

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'))
Ответить с цитированием
  #9 (permalink)  
Старый 02.04.2018, 09:49
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

laimas,
Идеально, спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
Количество отмеченный дней недели между двумя датами freenick jQuery 7 19.01.2016 00:25
Центрирование среднего блока между двумя float Siend (X)HTML/CSS 3 14.09.2015 14:08
Получение частей строки, заключенных между двумя подстроками Tie Общие вопросы Javascript 15 07.04.2013 08:24
Получение позиции текста по координатам traa Events/DOM/Window 20 08.02.2011 14:19