Próbuję wyodrębnić wszystko przed przecinkiem „,”. Jak to zrobić w JavaScript lub jQuery? Próbowałem tego i nie działa ..
1345 albany street, Bellevue WA 42344
Chcę tylko złapać adres.
var streetaddress= substr(addy, 0, index(addy, '.'));
Próbuję wyodrębnić wszystko przed przecinkiem „,”. Jak to zrobić w JavaScript lub jQuery? Próbowałem tego i nie działa ..
1345 albany street, Bellevue WA 42344
Chcę tylko złapać adres.
var streetaddress= substr(addy, 0, index(addy, '.'));
Odpowiedzi:
var streetaddress= addy.substr(0, addy.indexOf(','));
Chociaż nie jest to najlepsze miejsce do uzyskania ostatecznych informacji o tym, co robi każda metoda ( lepiej jest w tym przypadku sieć deweloperów Mozilli ), w3schools.com jest dobre do wprowadzenia cię w składnię.
substr
nie jest zalecane; należy substring
zamiast tego użyć developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
var streetaddress = addy.split(',')[0];
Spróbuj tego:
streetaddress.substring(0, streetaddress.indexOf(','));
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
Polecam też nazwać zmienne wielkimi literami (streetAddress) dla lepszej czytelności.
addy.split(',', 1)[0]
. Zobacz developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… .
const [streetAddress,] = addy.split(',');
Jest to pomocne w przypadkach, gdy potrzebujesz więcej niż jednej wartości, takich jak: let [callerIdName, callerId] = callerIdString.split('<');
(oryginalny format callerIdString to MCMULLIN, PARKER <+ 1XXXXXXXXXX>)
prawie taka sama jak odpowiedź Davida G., ale bez anonimowej funkcji, jeśli nie masz ochoty na nią.
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
w tym przypadku wykorzystujemy fakt, że drugim argumentem substr
jest długość i wiemy, że nasz podłańcuch zaczyna się od 0.
najwyższa odpowiedź nie jest ogólnym rozwiązaniem ze względu na niepożądane zachowanie, jeśli ciąg nie zawiera poszukiwanego znaku.
jeśli chcesz poprawnego zachowania w ogólnym przypadku, użyj tej metody lub metody Davida G, a nie najwyższej odpowiedzi
Metody regex i split również będą działać, ale mogą być nieco wolniejsze / przesadzone w przypadku tego konkretnego problemu.
Możesz także użyć shift()
.
var streetaddress = addy.split(',').shift();
Według MDN Web Docs:
shift()
Sposób usuwa się pierwszy element tablicy i zwraca usuniętego elementu. Ta metoda zmienia długość tablicy.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
var streetaddress = addy.substr(0, addy.indexOf('.'));
(Powinieneś przeczytać samouczek javascript , zwłaszcza część o funkcjach String )
Jeśli chcesz zwrócić oryginalny ciąg nietknięty, jeśli nie zawiera on znaku wyszukiwania, możesz użyć funkcji anonimowej (zamknięcie):
var streetaddress=(function(s){var i=s.indexOf(',');
return i==-1 ? s : s.substr(0,i);})(addy);
Można to uczynić bardziej ogólnym:
var streetaddress=(function(s,c){var i=s.indexOf(c);
return i==-1 ? s : s.substr(0,i);})(addy,',');
Możesz użyć wyrażenia regularnego, ponieważ da ci to ciąg znaków, jeśli będzie zgodny z wymaganiami. Kod mógłby wyglądać następująco:
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.
Więc rozbić kod. [1-9][0-9]*
w zasadzie oznacza, że pierwsza liczba nie może być zerem i musi być liczbą pomiędzy, 1-9
a kolejna liczba może być dowolną liczbą od 0-9
i może występować zero lub więcej razy, ponieważ czasami liczba jest tylko jedną cyfrą, a następnie pasuje do spacji. [a-zA-Z]
w zasadzie dopasowuje wszystkie duże litery do małych liter i musi wystąpić jeden lub więcej razy, i to się powtarza.
Możesz użyć Azle, aby uzyskać podciągi przed :
str = 'This is how we go to the place!'
az.get_everything_before(str, 'place')
Wynik : w ten sposób przechodzimy do
str = 'This is how we go to the place!'
az.get_everything_after(str, 'go')
Wynik : do miejsca!
i pomiędzy :
str = 'This is how we go to the place!'
az.get_everything_between(str, 'how', 'place')
Wynik : idziemy do
addy.split(',', 1)[0]