javascript在字符前获取字符串

我有一个字符串,我试图在引用之前提取字符。

例子是从14′ – 14.99美元中提取14

我正在使用以下代码来实现这一目标。

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

我的问题是,如果字符串是€0.88,我希望得到一个空字符串返回。 但是我收回了€0.88的全部字符串。

我在比赛中做错了什么?

这是你应该用来分割的东西:

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

然后处理你不存在的价值边缘情况:

 function split(str) { var i = str.indexOf("'"); if(i > 0) return str.slice(0, i); else return ""; } 

JsFiddle上的演示

似乎没有人提出我认为最安全和最明显的选项,涵盖了OP所提出的每个案例,所以我想我会提供这个:

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

试试这个

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

这是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返回带有前导的字符串?