J'ai la chaîne suivante:
str1 = "cat-one,cat2,cat-3";
OR
str1 = "catone,cat-2,cat3";
OR
str1 = "catone";
OR
str1 = "cat-one";
Le point ici est que les mots peuvent/peuvent ne pas avoir "-" s dedans
Utilisation de regex: Comment pourrais-je extraire le premier mot?
Appréciez toute aide sur ceci.
Merci, L
C'est assez facile, il suffit d'inclure les caractères autorisés entre crochets:
^([\w\-]+)
Une approche qui n’utilise pas de regex: en supposant que le premier mot soit toujours délimité par une virgule "," vous pouvez le faire:
var str1 = "cat-one";
var i = str1.indexOf(",");
var firstTerm = i == -1 ? str1 : str1.substring(0, i);
Modifier: En supposant que ce soit une question javascript, pour une raison quelconque.
Si quelqu'un souhaite un jour le faire à Swift, voici une extension:
extension String {
func firstWord() -> String? {
var error : NSError?
let internalExpression = NSRegularExpression(pattern: "^[a-zA-Z0-9]*", options: .CaseInsensitive, error: &error)!
let matches = internalExpression.matchesInString(self, options: nil, range:NSMakeRange(0, countElements(self)))
if (matches.count > 0) {
let range = (matches[0] as NSTextCheckingResult).range
return (self as NSString).substringWithRange(range)
}
return nil
}
}
Pour l'utiliser, il suffit d'écrire:
myString.firstWord()