Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.03.2012, 03:59
Новичок на форуме
Отправить личное сообщение для McAlex Посмотреть профиль Найти все сообщения от McAlex
 
Регистрация: 02.03.2012
Сообщений: 3

Вытянуть подстроку из строки от "а" до "б"
Подскажите, ребята, как выдернуть из строки текст, который находится между известными символами?
Например на flex'e все делается довольно просто:
var str = "OT=35434kfdoB"
var j:String = str.slice(str.indexOf("OT="), str.indexOf("B"));
В итоге j = "35434kfdo";

Искал на разных сайтах, не вижу ничего подобного. Метод slice в javascript'e, как я понял позволяет задавать только индекс символа в численном виде. Как по-другому реализовать данную задачу?

P.S. строка меняется, поэтому я не знаю с какой до какой позиции применять slice.
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2012, 04:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

alert( "OT=35434kfdoB".replace(/OT=(.*)B/, '$1') );
Ответить с цитированием
  #3 (permalink)  
Старый 02.03.2012, 04:24
Новичок на форуме
Отправить личное сообщение для McAlex Посмотреть профиль Найти все сообщения от McAlex
 
Регистрация: 02.03.2012
Сообщений: 3

Спасибо за отклик, но видимо я недостаточно точно очертил суть.
Я получаю запросом каждый раз разную строку, содержащую нужные мне числа. Например:

Result=ok
Price=23423.54
Bonus=4645.12

Мне нужно получить в две разные переменные эти два числа. Но строка меняется, иногда приходит просто:

Price=22323.74
Bonus=6545.56
Ответить с цитированием
  #4 (permalink)  
Старый 02.03.2012, 13:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

var str = "OT=35434kfdoB"
var j = str.slice(str.indexOf("OT=")+3, str.indexOf("B")); //3 - длина "OT=", ибо indexOf в js возвращает вхождение подстроки
alert(j)


Но обычно делают используют регулярки:
var str='Result=ok\nPrice=23423.54\nBonus=4645.12'
var j = str.match(/Price=([\d\.]+)[\s\S]*Bonus=([\d\.]+)/)
alert(j.join('\n--\n'))
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 02.03.2012, 16:41
Новичок на форуме
Отправить личное сообщение для McAlex Посмотреть профиль Найти все сообщения от McAlex
 
Регистрация: 02.03.2012
Сообщений: 3

Спасибо, Aetae!
То что надо.
Ответить с цитированием
  #6 (permalink)  
Старый 02.03.2012, 18:02
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

function parseString( str ) {
    var res = {};
    var lineList = str.split("\n");
    for ( var i = 0, line; typeof(line = lineList[i++]) == 'string'; ) {
        if ( /^\s*$/.test( line ) ) { continue; }
        var lineSplit = line.split("=");
        if ( "1" in lineSplit ) {
            res[ lineSplit[0] ] = lineSplit[1];
        }
    }
    return res;
}
Ответить с цитированием
Ответ



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

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