Javascript получает строку перед символом
У меня есть строка, и я пытаюсь извлечь символы перед цитатой.
Пример: извлечение 14 из 14 '- € 14.99
Я использую следующий код, чтобы добиться этого.
$menuItem.text().match(/[^']*/)[0]
Моя проблема в том, что если строка имеет значение примерно 0,88, я хочу вернуть пустую строку. Однако я верну полную строку 0,88 евро.
Чем я занимаюсь с матчем?
Ответы
Ответ 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
, который возвращает строку с ведущим ?
.