javascript получить строку перед символом

17

У меня есть строка, и я пытаюсь извлечь символы перед цитатой.

Пример: извлечение 14 из 14 '- € 14.99

Я использую следующий код, чтобы добиться этого.

$menuItem.text().match(/[^']*/)[0]

Моя проблема в том, что если строка имеет значение примерно 0,88, я хочу вернуть пустую строку. Однако я верну полную строку 0,88 евро.

Чем я занимаюсь с матчем?

    
задан Keith Power 25.08.2012 в 20:32
источник

4 ответа

30

Это то, что вы должны использовать для разделения:

string.slice(0, string.indexOf("'"));

И затем для обработки вашего случая несуществующего значения:

function split(str) {
 var i = str.indexOf("'");

 if(i > 0)
  return  str.slice(0, i);
 else
  return "";     
}

Демо на JsFiddle

    
ответ дан 3on 25.08.2012 в 20:34
источник
5

Никто, кажется, не представил то, что мне кажется самым безопасным и самым очевидным вариантом, который охватывает каждый из случаев, о которых спрашивал ОП, поэтому я подумал, что предлагаю это:

function getCharsBefore(str, chr) {
    var index = str.indexOf(chr);
    if (index != -1) {
        return(str.substring(0, index));
    }
    return("");
}
    
ответ дан jfriend00 25.08.2012 в 21:11
источник
4

попробуйте это

str.substring(0,str.indexOf("'"));
    
ответ дан nandu 25.08.2012 в 20:51
источник
0

Вот ярлык подчеркивания в coffescript

_.mixin
  substrBefore : ->
    [char, str] = arguments
    return "" unless char?
    fn = (s)-> s.substr(0,s.indexOf(char)+1)
    return fn(str) if str?
    fn

, или если вы предпочитаете сырой javascript: Ссылка

Вы можете использовать это для создания частичного типа:

var beforeQuote = _.substrBefore("'");
var hasQuote = beforeQuote("14' - €0.88"); // hasQuote = "14'"
var noQoute  = beforeQuote("14 €0.88");    // noQuote =  ""

Или просто вызовите его непосредственно со своей строкой

var beforeQuote = _.substrBefore("'", "14' - €0.88"); // beforeQuote = "14'"

Я намеренно решил оставить символ поиска в результатах, чтобы он соответствовал его дополнению mixin substrAfter (здесь приведена демонстрация: Ссылка ). Более поздний mixin был написан как утилита для анализа запросов URL-адресов. В некоторых случаях я просто использую location.search , который возвращает строку с ведущим ? .     

ответ дан jhnstn 23.10.2013 в 03:04
источник