如何在指定的字符jQuery或JavaScript之前获取子字符串

Anj*_*rma 215 javascript jquery substring substr

我试图在','逗号之前提取所有内容.我如何在JavaScript或jQuery中执行此操作?我试过这个并没有工作..

1345 albany street, Bellevue WA 42344
Run Code Online (Sandbox Code Playgroud)

我只想抓住街道地址.

var streetaddress= substr(addy, 0, index(addy, '.')); 
Run Code Online (Sandbox Code Playgroud)

whe*_*hys 360

var streetaddress= addy.substr(0, addy.indexOf(',')); 
Run Code Online (Sandbox Code Playgroud)

虽然它不是最好的地方获得关于每种方法的确切信息(mozilla开发者网络更好)w3schools.com很适合向您介绍语法.

  • 如果搜索的字符串不包含搜索字符的实例,则此方法无效.它将返回一个空字符串. (20认同)
  • 对于仍在检查此线程的人,这里是jsPerf比较性能https://jsperf.com/get-string-before-character (3认同)
  • 最后评论链接已死 (3认同)
  • 不推荐使用“substr”;应该使用 `substring` 代替 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr (2认同)

use*_*882 141

var streetaddress = addy.split(',')[0];
Run Code Online (Sandbox Code Playgroud)

  • 摆动和环形交叉 - 它不必要地创建一个数组,但至少在停止字符不在字符串中时起作用 (8认同)
  • 之前的评论链接已失效:/ (5认同)
  • 考虑`addy.split(",", 1)[0]`,它在第一次出现`","`后停止分裂。 (5认同)
  • 有关性能比较,请参阅:https://jsperf.com/street-array-vs-substr (2认同)

Mik*_*y G 27

试试这个:

streetaddress.substring(0, streetaddress.indexOf(','));
Run Code Online (Sandbox Code Playgroud)

  • 正如上面David G所指出的那样,可能是因为如果没有逗号就行不通.OP可能暗示字符串总是有逗号,但在许多情况下,分隔符不能保证.见https://jsfiddle.net/13pkp1xn/ (8认同)
  • 为什么我的回答不受欢迎?如果这个答案是正确的 http://stackoverflow.com/questions/3745515/what-is-the-difference- Between-substr-and-substring 我的答案与接受的答案一样准确,并且适​​用于 0 以外的起始索引。 (2认同)

小智 19

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

var streetaddress = addy.split(',')[0];
Run Code Online (Sandbox Code Playgroud)

此外,我建议使用camel-case(streetAddress)命名变量,以提高可读性.

  • 你可以保存一些处理并停止拆分第一个","通过使用@antak在/sf/answers/1567045651/中发布的评论找到:`addy.split(',',1) [0]`.请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split. (2认同)
  • 这个答案不是和2015年10月30日发布的答案一模一样吗? (2认同)

flu*_*flu 14

如果您喜欢它,只需使用RegExp:

var streetAddress = /[^,]*/.exec(addy)[0];
Run Code Online (Sandbox Code Playgroud)

  • +1,我认为这是一个合理的方法,但我从中得到了一个提示,并使用`addy.split(',',1)[0] (4认同)
  • 这个方法非常好,例如,如果你想在空格上分割:/ [^\s]*/.exec(...) (3认同)

m a*_*m a 10

几乎与David G的答案相同但没有匿名功能,如果你不想包括一个.

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们利用第二个参数substr是长度的事实,并且我们知道我们的子字符串从0开始.

最佳答案不是通用解决方案,因为如果字符串不包含您要查找的字符,则会出现不良行为.

如果你想在一般情况下使用正确的行为,请使用此方法或David G的方法,而不是最佳答案

正则表达式和拆分方法也可以工作,但对于这个特定问题可能会有点慢/过度杀伤.


Gra*_*ler 7

您也可以使用shift()

var streetaddress = addy.split(',').shift();
Run Code Online (Sandbox Code Playgroud)

根据MDN网络文档:

shift()方法从数组中删除第一个元素,然后返回该删除的元素。此方法更改数组的长度。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

  • 使用 [0] 建立索引比使用 .shift() 更有效 (2认同)

max*_*ler 6

var streetaddress = addy.substr(0, addy.indexOf('.')); 
Run Code Online (Sandbox Code Playgroud)

(您应该阅读javascript教程,尤其是关于String函数的部分)


Gau*_*rav 6

var newString = string.substr(0,string.indexOf(','));
Run Code Online (Sandbox Code Playgroud)