javascript在字符前获取字符串

时间:2012-08-25 18:32:52

标签: javascript jquery

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

示例是从 14'中提取 14 - €14.99

我正在使用以下代码来实现此目的。

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

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

我在比赛中做错了什么?

5 个答案:

答案 0 :(得分:38)

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

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

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

function split(str) {
 var i = str.indexOf("'");

 if(i > 0)
  return  str.slice(0, i);
 else
  return "";     
}

Demo on JsFiddle

答案 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) //三个