我试图在JavaScript或jQuery中提取逗号之前的所有内容。我尝试了以下代码但不起作用。
1345 albany street, Bellevue WA 42344
我只想获取街道地址。
var streetaddress= substr(addy, 0, index(addy, '.'));
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很适合介绍语法。
substr
,应该使用substring
。参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substring - Ben Creasyvar streetaddress = addy.split(',')[0];
addy.split(",", 1)[0]
,它在第一次出现 ","
后停止分割。 - Sebastian Simon尝试这个:
streetaddress.substring(0, streetaddress.indexOf(','));
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
另外,我建议您使用驼峰命名法(streetAddress)来命名变量,以提高可读性。
addy.split(',', 1)[0]
,在第一个逗号处停止分割,从而节省一些处理时间。请参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split。 - fluconst [streetAddress,] = addy.split(',');
当您想要多个值时,这非常有用,例如:let [callerIdName, callerId] = callerIdString.split('<');
(原始callerIdString格式为MCMULLIN,PARKER <+1XXXXXXXXXX>) - parker_codes如果您喜欢简短的话,可以使用RegExp:
var streetAddress = /[^,]*/.exec(addy)[0];
addy.split(',', 1)[0]
。 - antakstreetAddress = addy.replace(/,.*$/, '');
,这将仅在第一个匹配项(,
)存在时才删除其后的所有内容。 - miile7您还可以使用shift()
。
var streetaddress = addy.split(',').shift();
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的方法,而不是顶部的答案。
正则表达式和分割方法也可以工作,但对于这个特定问题来说可能有点慢/杀鸡焉用牛刀。
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,',');
addy.split(',', 1)[0]
的翻译是:以逗号为分隔符对addy
进行拆分,只返回第一个元素。 - antak