繁体   English   中英

javascript获取字符前的字符串

[英]javascript get string before a character

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

实施例是提取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 "";     
}

在 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返回一个带前导的字符串? .

我使用“拆分”:

let string = "一二三";

让 um = string.split('-')[0];
让 dois = string.split('-')[1];
让 tres = string.split('-')[2];

document.write(tres) //三

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM