如何在指定的字符jQuery或JavaScript之前获取子字符串

时间:2012-02-03 17:49:29

标签: javascript jquery substring substr

我试图在','逗号之前提取所有内容。我如何在JavaScript或jQuery中执行此操作?我试过这个但没有工作..

1345 albany street, Bellevue WA 42344

我只想抓住街道地址。

var streetaddress= substr(addy, 0, index(addy, '.')); 

12 个答案:

答案 0 :(得分:324)

var streetaddress= addy.substr(0, addy.indexOf(',')); 

虽然对于每种方法的确切信息(mozilla developer network更好),最佳位置并不是最佳位置,但w3schools.com有助于向您介绍语法。

答案 1 :(得分:126)

var streetaddress = addy.split(',')[0];

答案 2 :(得分:26)

试试这个:

streetaddress.substring(0, streetaddress.indexOf(','));

答案 3 :(得分:14)

//split string into an array and grab the first item

var streetaddress = addy.split(',')[0];

此外,我建议使用camel-case(streetAddress)命名变量,以提高可读性。

答案 4 :(得分:13)

如果你喜欢简短,只需使用RegExp

var streetAddress = /[^,]*/.exec(addy)[0];

答案 5 :(得分:8)

与David G的回答几乎相同但没有匿名功能,如果你不想包括一个。

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));

在这种情况下,我们利用substr的第二个参数是一个长度的事实,并且我们知道我们的子字符串从0开始。

最佳答案是不是通用解决方案,因为如果字符串不包含您要查找的字符,则会出现不良行为。

如果您想在通用案例中使用正确的行为,请使用此方法或David G的方法,而不是最佳答案

正则表达式和拆分方法也可以使用,但对于这个特定问题可能会有点慢/过度。

答案 6 :(得分:5)

var streetaddress = addy.substr(0, addy.indexOf('.')); 

(您应该通读javascript tutorial,尤其是关于String functions的部分

答案 7 :(得分:5)

您也可以使用shift()

var streetaddress = addy.split(',').shift();

根据MDN网络文档:

  

shift() 方法从数组中删除第一个元素并返回已删除的元素。此方法更改数组的长度。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

答案 8 :(得分:4)

var newString = string.substr(0,string.indexOf(','));

答案 9 :(得分:4)

如果你想要保持原始字符串不变,如果它不包含搜索字符,那么你可以使用匿名函数(一个闭包):

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,',');

答案 10 :(得分:3)

您可以使用正则表达式,因为如果符合要求,它将为您提供字符串。该代码将类似于:

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

答案 11 :(得分:0)

您可以使用 Azle 获得子字符串 before

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

az.get_everything_before(str, 'place')

结果:这就是我们进入

的方式

after

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

az.get_everything_after(str, 'go')

结果:到该位置!

between 中:

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

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

结果:我们进入