2012-02-03 16 views
136

我正试图提取','逗号前的所有内容。我如何在JavaScript或jQuery中做到这一点?我试过这个,不工作..如何在指定字符之前抓取子串jQuery或JavaScript

1345 albany street, Bellevue WA 42344 

我只想抓住街道地址。

var streetaddress= substr(addy, 0, index(addy, '.')); 
+16

'addy.split(',',1)[0]' – antak 2014-08-08 05:37:27

+2

@antak:发布该答案,而不是评论。 – ArtOfWarfare 2015-03-28 14:52:57

回答

233
var streetaddress= addy.substr(0, addy.indexOf(',')); 

虽然它不是最好的在明确的地方形成每种方法的作用(mozilla developer network更好)w3schools.com非常适合向您介绍语法。

+140

不需要光顾。 – naomi 2014-05-20 13:33:13

+16

如果搜索的字符串不包含搜索字符的实例,则这不起作用。它会返回一个空字符串。 – 2015-08-20 19:48:12

+0

Per David G,请参阅https://jsfiddle.net/13pkp1xn/ – 2017-01-23 10:53:26

3
var newString = string.substr(0,string.indexOf(',')); 
19

试试这个:

streetaddress.substring(0, streetaddress.indexOf(',')); 
+0

为什么不爱我的答案?如果这个答案是正确的http://stackoverflow.com/questions/3745515/what-is-the-difference-between-substr-and-substring我的答案与接受的答案一样准确,并且适​​用于开始非零索引 – 2015-08-05 20:53:20

+3

正如David G所指出的那样,可能是因为如果没有逗号,它就不起作用。OP可能暗示该字符串总是有逗号,但在很多情况下,分隔符不能保证。见https://jsfiddle.net/13pkp1xn/ – 2017-01-23 10:51:59

12

如果你喜欢它的短简单地用一个RegExp

var streetAddress = /[^,]*/.exec(addy)[0]; 
+1

是否有问题这个? – flu 2014-07-23 08:50:10

+4

+1,我认为这是一个合理的方法,但是我从这里得到了一个提示,并且用'addy.split(',',1)[0]' – antak 2014-08-08 05:39:16

+3

这个方法非常好,例如,如果你想分割在空白处:/ [^ \ s] * /。exec(...) – NuSkooler 2015-08-01 18:08:47

3

如果你想返回原始的字符串不变,如果它不包含搜索字符,那么你可以使用匿名函数(闭包):

var streetaddress=(function(s){var i=s.indexOf(','); 
    return i==-1 ? s : s.substr(0,i);})(addy); 

这可以变得更加通用:

var streetaddress=(function(s,c){var i=s.indexOf(c); 
    return i==-1 ? s : s.substr(0,i);})(addy,','); 
89
var streetaddress = addy.split(',')[0]; 
+1

摆动和回旋 - 它不必要地创建数组,但是至少在停止字符不在字符串中时工作 – Alnitak 2017-01-30 11:28:09

+1

要进行性能比较,请参阅:https://jsperf.com/street-array-vs-substr – FrankerZ 2017-11-30 13:17:53

6

几乎与David G的答案一样,但没有匿名函数,如果你不想包括一个。

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(',')); 
在这种情况下

我们利用这样一个事实:substr第二个参数是一个长度,我们知道我们的子串从0开始。

最多的回答是不是一个通用的解决方案,因为如果该字符串不包含您正在查找的字符会导致不良行为。

如果你想在一个通用的情况下,正确的行为,使用此方法或大卫G公司的方法,而不是顶部答案

正则表达式和分离方法也可以工作,但可能会略慢/矫枉过正这一特定问题。

10
//split string into an array and grab the first item 

var streetaddress = addy.split(',')[0]; 

此外,我建议命名您的变量与骆驼案(streetAddress)为更好的可读性。

+0

这比使用indexof的方法更好,在没有逗号字符的情况下 – 2017-01-22 19:17:06

+0

您可以保存一些处理并停止在第一个“ “通过在https://stackoverflow.com/a/22386366/601386:'addy.split(',',1)[0]'中使用@antak发布的评论发现。请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split。 – flu 2017-10-12 08:16:42

相关问题