我有一个字符串,我试图在引用之前提取字符。
示例是从 14'中提取 14 - €14.99
我正在使用以下代码来实现此目的。
$menuItem.text().match(/[^']*/)[0]
我的问题是,如果字符串是€0.88,我希望得到一个空字符串返回。但是我收回了0.88欧元的全部字符串。
我在比赛中做错了什么?
答案 0 :(得分:38)
这是你应该用来分割的东西:
string.slice(0, string.indexOf("'"));
然后处理你的非存在价值边缘情况:
function split(str) {
var i = str.indexOf("'");
if(i > 0)
return str.slice(0, i);
else
return "";
}
答案 1 :(得分:5)
似乎没有人提出我认为最安全,最明显的选项,涵盖OP所提出的每个案例,所以我认为我会提供这个:
function getCharsBefore(str, chr) {
var index = str.indexOf(chr);
if (index != -1) {
return(str.substring(0, index));
}
return("");
}
答案 2 :(得分:4)
试试这个
str.substring(0,str.indexOf("'"));
答案 3 :(得分:0)
这是coffescript中的下划线mixin
_.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
返回带有前导?
的字符串。
答案 4 :(得分:0)
我使用“拆分”:
let string = "一二三";
let um = string.split('-')[0];
let dois = string.split('-')[1];
let tres = string.split('-')[2];
document.write(tres) //三个