我正在尝试提取','逗号之前的所有内容。如何在JavaScript或jQuery中做到这一点?我试过了,但没有用。
1345 albany street, Bellevue WA 42344
我只想知道街道地址。
var streetaddress= substr(addy, 0, index(addy, '.'));
var streetaddress = addy.substr(0, addy.indexOf('.'));
(你应该通读javascript教程,特别是关于字符串函数的部分)
var newString = string.substr(0,string.indexOf(','));
试试这个:
streetaddress.substring(0, streetaddress.indexOf(','));
var streetaddress = addy.substr(0, addy.indexOf(','));
虽然它不是每个方法的确切信息的最佳位置(Mozilla开发人员网络更适合于此),但w3schools.com适合为您介绍语法。
如果你喜欢它短,只需使用正则表达式:
var streetAddress = /[^,]*/.exec(addy)[0];
如果你想要原封不动地返回不包含搜索字符的原始字符串,那么你可以使用匿名函数(闭包):
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,',');
var streetaddress = addy.split(',')[0];
几乎和David G的答案一样,但是没有匿名函数,如果你不想包含一个的话。
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
在这种情况下,我们利用了substr的第二个参数是一个长度,并且我们知道子字符串从0开始。
substr
上面的答案是不是一般的解决方案,因为如果字符串不包含你要查找的字符,就会出现不受欢迎的行为。
如果你想要在一般情况下正确的行为,使用这个方法或者大卫G的方法,而不是上面的答案
Regex和split方法也可以工作,但对于这个特定的问题可能有点慢/过度。
//split string into an array and grab the first item var streetaddress = addy.split(',')[0];
此外,我建议使用驼峰格式(streetAddress)来命名变量,以提高可读性。
你也可以使用shift()。
shift()
var streetaddress = addy.split(',').shift();
根据MDN Web Docs:
shift()方法从数组中移除第一个元素,并返回被移除的元素。此方法更改数组的长度。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
您可以使用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]基本上将所有大写字母匹配为小写字母,并且必须重复出现一次或多次。
[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);
没人说一定要写在一行上。