[英]How to grab substring before a specified character in JavaScript?
我正在尝试提取“,”逗号之前的所有内容。 如何在 JavaScript 或 jQuery 中执行此操作? 我试过这个但不工作..
1345 albany street, Bellevue WA 42344
我只想获取街道地址。
var streetaddress= substr(addy, 0, index(addy, '.'));
var streetaddress = addy.substr(0, addy.indexOf(','));
虽然它不是获取有关每种方法作用的确切信息的最佳位置( mozilla 开发人员网络对此更好)但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];
此外,我建议您使用 camel-case(streetAddress) 命名您的变量,以获得更好的可读性。
如果您喜欢简短,只需使用RegExp :
var streetAddress = /[^,]*/.exec(addy)[0];
与大卫 G 的答案几乎相同,但没有匿名功能,如果您不想包含一个。
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
在这种情况下,我们利用substr
的第二个参数是一个长度这一事实,并且我们知道我们的子字符串从 0 开始。
最佳答案不是通用解决方案,因为如果字符串不包含您要查找的字符,则会出现不良行为。
如果您想在一般情况下正确行为,请使用此方法或 David G 的方法,而不是最佳答案
正则表达式和拆分方法也可以工作,但对于这个特定问题可能会有点慢/过大。
您也可以使用shift()
。
var streetaddress = addy.split(',').shift();
根据 MDN 网络文档:
shift()
方法从数组中删除第一个元素并返回删除的元素。 此方法更改数组的长度。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
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,',');
您可以使用正则表达式,因为如果它符合要求,它将为您提供字符串。 代码将类似于:
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]
基本上将所有大写字母与小写字母匹配,并且必须出现一次或多次,并且重复。
如果您担心遇到没有逗号的情况,您可以这样做:
var end = Math.min(addy.indexOf(","), addy.length)
var streetaddress = addy.substr(0, end);
没有人说它必须放在一条线上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.