[Swift] NS Predicate ne peut pas faire la distinction entre pleine largeur et demi-largeur

Distinguer toute la demi-largeur avec NS Predicate

Le code ci-dessous est un processus permettant de déterminer si le numéro de mobile est entré en caractères alphanumériques demi-largeur. À première vue, cela semble fonctionner normalement, mais avec cela, true est renvoyé indépendamment du fait qu'il soit considéré comme pleine largeur "090-0000-0000" ou demi-largeur "090-0000-0000", et il n'est pas possible de faire la distinction entre pleine largeur et demi-largeur.

func checkPhoneNum(string: String) -> Bool {
  let format = "[0-9]{3}-[0-9]{4}-[0-9]{4}"
  let predicate = NSPredicate(format:"SELF MATCHES %@", format)
  return predicate.evaluate(with: string)
}

Distinguer la demi-largeur complète dans NSRegularExpression

Comme mentionné ci-dessus, NS Predicate ne peut pas faire la distinction entre les angles pleins et les demi-angles, donc l'expression régulière NS détermine comme suit. Cela renverra false pour la pleine largeur et true pour la demi-largeur.

func checkPhoneNum(string: String) -> Bool {
  let format = "[0-9]{3}-[0-9]{4}-[0-9]{4}"
  let regexp = try! NSRegularExpression.init(pattern: format, options: [])
  let nsString = string as NSString
  let matchRet = regexp.firstMatch(in: string, options: [], range: NSRange.init(location: 0, length: nsString.length))
  return matchRet != nil
}

référence

http://aryzae.hatenablog.com/entry/2017/12/13/004159

Recommended Posts

[Swift] NS Predicate ne peut pas faire la distinction entre pleine largeur et demi-largeur
[Java] Aligne les caractères même avec des caractères mixtes demi-largeur et pleine largeur
À propos de la différence entre irb et pry
[Rails / Active Record] À propos de la différence entre créer et créer!
Distinguer les entiers et les fractions avec des expressions régulières
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
[Rails] J'ai étudié la différence entre les ressources et les ressources
Convertit le tableau d'erreurs.full_messages en caractères et sortie
Différences entre les classes et les instances dans Ruby
À propos de la relation entre les méthodes HTTP, les actions et CRUD
Méditez la querelle entre Power Mock et Jacoco avec Gradle
[Swift] UITextField m'a appris la différence entre nil et ""