web-dev-qa-db-fra.com

Comment récupérer une sous-chaîne devant un caractère spécifié jQuery ou JavaScript

J'essaie de tout extraire avant la virgule ','. Comment est-ce que je fais ceci en JavaScript ou jQuery? J'ai essayé cela et ne fonctionne pas ..

1345 albany street, Bellevue WA 42344

Je veux juste saisir l'adresse de la rue.

var streetaddress= substr(addy, 0, index(addy, '.')); 
201
Anjana Sharma
var streetaddress= addy.substr(0, addy.indexOf(',')); 

Bien que ce ne soit pas le meilleur endroit pour obtenir des informations définitives sur ce que fait chaque méthode ( réseau de développeurs Mozilla , c'est mieux pour cela) w3schools.com est utile pour vous familiariser avec la syntaxe.

344
wheresrhys
var streetaddress = addy.split(',')[0];
135
user3336882

essaye ça:

streetaddress.substring(0, streetaddress.indexOf(','));
26
Mikey G
//split string into an array and grab the first item

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

Aussi, je vous recommande de nommer vos variables avec camel-case (streetAddress) pour une meilleure lisibilité.

17
Miles Florence

Si vous l'aimez, utilisez simplement RegExp :

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

presque la même chose que la réponse de David G mais sans la fonction anonyme, si vous ne souhaitez pas en inclure une.

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

dans ce cas, nous utilisons le fait que le deuxième argument de substr est une longueur et que nous savons que notre sous-chaîne commence à 0.

la réponse principale est pas une solution générique à cause du comportement indésirable si la chaîne ne contient pas le caractère que vous recherchez.

si vous voulez un comportement correct dans un cas générique, utilisez cette méthode ou la méthode de David G, pas la réponse principale

les méthodes regex et split fonctionneront également, mais peuvent être un peu plus lentes/excessives pour ce problème spécifique.

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

(Vous devriez lire à travers un tutoriel javascript , en particulier la partie consacrée à fonctions de chaîne )

6
max.weller

Vous pouvez également utiliser shift() .

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

Selon les documents Web MDN:

La méthode shift() supprime le premier élément d'un tableau et renvoie l'élément supprimé élément. Cette méthode change la longueur du tableau.

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

6
Grant Miller
var newString = string.substr(0,string.indexOf(','));
4
Gaurav

Si vous souhaitez renvoyer la chaîne d'origine non modifiée si elle ne contient pas le caractère de recherche, vous pouvez utiliser une fonction anonyme (une fermeture):

var streetaddress=(function(s){var i=s.indexOf(',');
   return i==-1 ? s : s.substr(0,i);})(addy);

Cela peut être rendu plus générique:

var streetaddress=(function(s,c){var i=s.indexOf(c);
   return i==-1 ? s : s.substr(0,i);})(addy,',');
4
David G