如何在指定字符jQuery或JavaScript之前获取子字符串
我试图提取逗号之前的所有内容。如何在JavaScript或jQuery中实现这一点?我试过了,但没用如何在指定字符jQuery或JavaScript之前获取子字符串,javascript,jquery,substring,substr,Javascript,Jquery,Substring,Substr,我试图提取逗号之前的所有内容。如何在JavaScript或jQuery中实现这一点?我试过了,但没用 1345 albany street, Bellevue WA 42344 我只想知道街道地址 var streetaddress= substr(addy, 0, index(addy, '.')); (你应该通读a,特别是关于的部分)试试这个: streetaddress.substring(0, streetaddress.indexOf(',')); 虽然它不是提供每个方法的确切
1345 albany street, Bellevue WA 42344
我只想知道街道地址
var streetaddress= substr(addy, 0, index(addy, '.'));
(你应该通读a,特别是关于的部分)试试这个:
streetaddress.substring(0, streetaddress.indexOf(','));
虽然它不是提供每个方法的确切信息的最佳场所(最好是这样),但它有助于向您介绍语法。如果您喜欢简短的介绍,只需使用:
如果要在原始字符串不包含搜索字符的情况下原封不动地返回该字符串,则可以使用匿名函数(闭包): 这可以更加通用:
var streetaddress=(function(s,c){var i=s.indexOf(c);
return i==-1 ? s : s.substr(0,i);})(addy,',');
与David G的答案几乎相同,但没有匿名函数,如果您不想包含匿名函数的话
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
在本例中,我们利用了以下事实:substr
的第二个参数是一个长度,并且我们知道我们的子字符串从0开始
顶部答案是不是通用解决方案,因为如果字符串不包含您要查找的字符,则会出现不良行为
如果您希望在一般情况下有正确的行为,请使用此方法或David G的方法,而不是顶部答案
regex和split方法也可以工作,但是对于这个特定的问题,可能会有点慢/过度
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
此外,我建议使用驼峰大小写(streetAddress)命名变量,以提高可读性。您也可以使用
根据MDN Web文档:
shift()
方法从数组中删除第一个元素,并返回删除的元素。此方法更改数组的长度
您可以使用正则表达式,因为如果符合要求,它将为您提供字符串。代码类似于:
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]基本上将所有大写字母与小写字母匹配,并且必须出现一次或多次,这是重复的。addy.split(',',1)[0]
+1,我认为这是一个合理的方法,但我从中得到了一个提示,使用了addy.split(',',1)[0]
此方法非常好,例如,如果您想在空白处拆分:/[^\s]*/.exec(…)为什么不喜欢我的答案?如果这个答案是正确的,那么我的答案与公认的答案一样准确,并且适用于除0以外的起始索引。正如上面David G所指出的,可能是因为如果没有逗号,它就不起作用。OP可能暗示字符串将始终有一个逗号,但在许多情况下,分隔符不能保证。请参见,如果正在搜索的字符串不包含搜索字符的实例,则此操作将不起作用。它将返回一个空字符串。substr
不推荐使用;应该改用子字符串
,这比使用indexof的方法要好,在没有逗号字符的情况下,您可以保存一些处理并在第一个“,”中停止拆分,通过使用@antak作为注释发布在中的内容找到:addy.split(',',1)[0]
。请参阅。使用数组解构,您可以执行以下操作:const[streetAddress,]=addy.split(',')代码>这对于需要多个值的情况很有帮助,例如:let[callerIdName,callerId]=callerIdString.split(“这个答案不是与2015年10月30日发布的答案完全相同吗?swings and Roundounds-它不必要地创建了一个数组,但至少在停止字符不在字符串中的情况下有效。为了进行性能比较,请参阅:上一个注释链接已失效:/0索引比使用.shift()更有效)
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];
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
var streetaddress = addy.split(',').shift();
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.