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

How to grab substring before a specified character in JavaScript?

本文关键字:字符 字符串 取指 JavaScript 获取      更新时间:2023-09-26

我正在尝试提取','逗号之前的所有内容。如何在JavaScript或jQuery中做到这一点?我试过了,但没用。。

1345 albany street, Bellevue WA 42344

我只想查一下街道地址。

var streetaddress= substr(addy, 0, index(addy, '.')); 
const streetAddress = addy.substring(0, addy.indexOf(","));

虽然这不是关于每种方法的确切信息的最佳位置(MDN Web Docs更适合),但W3Schools.com很适合向您介绍语法。

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

试试这个:

streetaddress.substring(0, streetaddress.indexOf(','));
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];

此外,为了更好的可读性,我建议用驼色大小写(streetAddress)命名变量。

如果你喜欢它的缩写,只需使用RegExp:

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

您也可以使用shift()

var streetaddress = addy.split(',').shift();

根据MDN Web文档:

shift()方法从数组中移除第一个元素,并返回移除的元素。此方法会更改数组的长度。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

与David G的答案几乎相同,但没有匿名函数,如果您不想包含匿名函数的话。

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));

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

最重要的答案是不是一个通用的解决方案,因为如果字符串不包含您要查找的字符,会出现不希望的行为。

如果你想在一般情况下得到正确的行为,可以使用这个方法或David G的方法,而不是的最佳答案

regex和split方法也会起作用,但对于这个特定的问题,可能会慢一些/处理过度。

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

(您应该通读javascript教程,特别是关于字符串函数的部分)

如果您想在不包含搜索字符的情况下原封不动地返回原始字符串,那么您可以使用匿名函数(闭包):

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,',');

您可以使用regex,因为如果它符合要求,它将为您提供字符串。代码应该是这样的:

const address = "1345 albany street, Bellevue WA 42344";
const regex = /[1-9][0-9]* [a-zA-Z]+ [a-zA-Z]+/;
const matchedResult = address.match(regex);
console.log(matchedResult[0]); // This will give you 1345 albany street.

所以要分解代码。[1-9][0-9]*基本上意味着第一个数字不能是零,必须是1-9之间的数字,而下一个数字可以是0-9中的任何数字,并且可以出现零次或多次,因为有时这个数字只有一个数字,然后它匹配一个空格。[a-zA-Z]基本上将所有大写字母与小写字母匹配,并且必须出现一次或多次,并且重复这种情况。

如果你担心遇到没有逗号的情况,你可以这样做:

let end = addy.indexOf(",") >= 0 ? addy.indexOf(",") : addy.length;
let streetaddress = addy.substr(0, end);

没有人说它必须在一条线上。