繁体   English   中英

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

[英]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]基本上将所有大写字母与小写字母匹配,并且必须出现一次或多次,并且重复。

您可以使用AZLE获得子之前

str = 'This is how we go to the place!'

az.get_everything_before(str, 'place')

结果 :这就是我们去

str = 'This is how we go to the place!'

az.get_everything_after(str, 'go')

结果 :到了地方!

之间

str = 'This is how we go to the place!'

az.get_everything_between(str, 'how', 'place')

结果 :我们转到

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

var end = Math.min(addy.indexOf(","), addy.length)
var streetaddress = addy.substr(0, end);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM