Как получить подстроку перед указанным символом jQuery или JavaScript - PullRequest
195 голосов
/ 03 февраля 2012

Я пытаюсь извлечь все до запятой ','.Как мне сделать это в JavaScript или JQuery?Я пытался это и не работает ..

1345 albany street, Bellevue WA 42344

Я просто хочу захватить адрес улицы.

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

Ответы [ 10 ]

334 голосов
/ 03 февраля 2012
var streetaddress= addy.substr(0, addy.indexOf(',')); 

Хотя это не лучшее место для точной информации о том, что делает каждый метод ( сеть разработчиков Mozilla лучше для этого) w3schools.com хорошо для того, чтобы познакомить вас ссинтаксис.

130 голосов
/ 30 октября 2015
var streetaddress = addy.split(',')[0];
26 голосов
/ 03 февраля 2012

попробуйте это:

streetaddress.substring(0, streetaddress.indexOf(','));
14 голосов
/ 15 марта 2016
//split string into an array and grab the first item

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

Кроме того, я бы порекомендовал именовать ваши переменные в случае верблюда (streetAddress) для лучшей читаемости.

13 голосов
/ 13 марта 2014

Если вам это нравится, просто используйте RegExp :

var streetAddress = /[^,]*/.exec(addy)[0];
9 голосов
/ 10 марта 2016

почти то же самое, что и ответ Дэвида Г., но без анонимной функции, если вы не хотите включать ее.

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

в этом случае мы используем тот факт, что второй аргумент substr является длиной, и мы знаем, что наша подстрока начинается с 0.

верхний ответ - - не общее решение из-за нежелательного поведения, если строка не содержит искомого символа.

если вы хотите правильного поведения в общем случае, используйте этот метод или метод Дэвида Г., а не верхний ответ

Методы регулярного выражения и разбиения также будут работать, но могут быть несколько медленнее / излишними для этой конкретной проблемы.

5 голосов
/ 24 апреля 2018

Вы также можете использовать shift().

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

Согласно документам MDN Web:

shift() метод удаляет элемент first из массива и возвращает этот удаленный элемент.Этот метод изменяет длину массива.

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

5 голосов
/ 03 февраля 2012
var streetaddress = addy.substr(0, addy.indexOf('.')); 

(Вы должны прочитать руководство по JavaScript , особенно часть о Строковых функциях )

4 голосов
/ 21 августа 2015

Если вы хотите вернуть исходную строку без изменений, если она не содержит символа поиска, вы можете использовать анонимную функцию (закрытие):

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,',');
4 голосов
/ 03 февраля 2012
var newString = string.substr(0,string.indexOf(','));
...