Я пытаюсь извлечь все до запятой ','. Как мне сделать это в JavaScript или jQuery? Я попробовал это и не работает ..
1345 albany street, Bellevue WA 42344
Я просто хочу получить адрес улицы.
var streetaddress= substr(addy, 0, index(addy, '.'));
Я пытаюсь извлечь все до запятой ','. Как мне сделать это в 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 полезен для знакомства с синтаксисом.
substr
не рекомендуется; следует использовать substring
вместо developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
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) для лучшей читаемости.
addy.split(',', 1)[0]
. См. Developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… .
const [streetAddress,] = addy.split(',');
Это полезно в тех случаях, когда вам нужно более одного значения, например: let [callerIdName, callerId] = callerIdString.split('<');
(исходный формат callerIdString - MCMULLIN, PARKER <+ 1XXXXXXXXXX>)
почти то же самое, что и ответ Дэвида Г., но без анонимной функции, если вы не хотите включать ее.
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
в этом случае мы используем тот факт, что второй аргумент substr
- это длина, и мы знаем, что наша подстрока начинается с 0.
верхний ответ не является общим решением из-за нежелательного поведения, если строка не содержит искомого символа.
если вам нужно правильное поведение в общем случае, используйте этот метод или метод Дэвида Г., а не верхний ответ
Методы regex и split также будут работать, но могут быть несколько медленнее / излишними для этой конкретной проблемы.
Вы также можете использовать shift()
.
var streetaddress = addy.split(',').shift();
Согласно MDN Web Docs:
shift()
Метод удаляет первый элемент из массива и возвращает этот элемент удаленного. Этот метод изменяет длину массива.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
var streetaddress = addy.substr(0, addy.indexOf('.'));
(Вы должны прочитать руководство по javascript , особенно часть о функциях String )
Если вы хотите вернуть исходную строку без изменений, если она не содержит поисковый символ, вы можете использовать анонимную функцию (закрытие):
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')
Результат : мы идем к
addy.split(',', 1)[0]