我有一个字符串,我正在尝试提取引号之前的字符。
示例是从14' 中提取14 - €14.99
我正在使用以下代码来实现这一点。
$menuItem.text().match(/[^']*/)[0]
我的问题是,如果字符串类似于 €0.88,我希望返回一个空字符串。但是我拿回了 0.88 欧元的完整字符串。
我在比赛中做错了什么?
我有一个字符串,我正在尝试提取引号之前的字符。
示例是从14' 中提取14 - €14.99
我正在使用以下代码来实现这一点。
$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 "";
}
似乎没有人提出在我看来是最安全和最明显的选择,涵盖了 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
which 返回一个带有前导的字符串?
。
我使用“拆分”:
让字符串=“一二三”;
让 um = string.split('-')[0];
让 dois = string.split('-')[1];
让 tres = string.split('-')[2];
document.write(tres) //三个