Подтвердить что ты не робот

Javascript получает строку перед символом

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Демо на JsFiddle

Ответ 2

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

function getCharsBefore(str, chr) {
    var index = str.indexOf(chr);
    if (index != -1) {
        return(str.substring(0, index));
    }
    return("");
}

Ответ 3

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

str.substring(0,str.indexOf("'"));

Ответ 4

Вот ярлык подчеркивания в 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: http://jsfiddle.net/snrobot/XsuQd/

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

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 (здесь приведена демонстрация: http://jsfiddle.net/snrobot/SEAZr/). Более поздний mixin был написан как утилита для анализа запросов URL-адресов. В некоторых случаях я просто использую location.search, который возвращает строку с ведущим ?.