2017-03-14 3 views
0

Je dois retourner les 4 derniers chiffres d'un champ de numéro de téléphone (où le format n'est pas cohérent) pour afficher un code PIN.Retour Les 4 derniers chiffres du numéro de téléphone dans Velocity

Toutes mes excuses pour ma tentative grotesque, mais que puis-je changer ci-dessous pour afficher $ PIN comme les 4 derniers chiffres du champ téléphonique?

#set ($PIN = ${lead.IR_Main_Phone__c}.substring(0,-4))

+0

Merci pour les réponses. Velocity n'est pas directement Java ni JS (voir ici: http: //velocity.apache.org/engine/1.7/vtl-reference.html). Malheureusement, la sous-chaîne (X, X) fonctionne mais la sous-chaîne (X, -X) ne fonctionne pas. – Taen

+0

Vous pouvez essayer l'alternative que j'ai posté, sans sous-chaîne, juste pure regex – BioGenX

Répondre

0

n'est pas la vitesse d'une bibliothèque d'animation? Il suffit d'utiliser javascript régulier

var str = "123-4 5 6 7"; 
var numbersOnly = str.match(/\d+/g, str).join(''); 
console.log(numbersOnly.length); // outputs 7 
console.log(numbersOnly.substr(numbersOnly.length-4)); //output "4567" 

Edit: utilise maintenant regex pour filtrer les non-numéros

+0

OP a écrit que le format n'est pas cohérent, de sorte que les quatre derniers caractères pourraient être "1 2" de "9 8 7 6 1 2". Pourriez-vous penser à une façon d'utiliser une regex pour extraire seulement les chiffres de la chaîne et obtenir les quatre derniers? –

1

Vous devez filtrer les caractères non-chiffres dans lead.IR_Main_Phone__c var, puis obtenir 4 derniers chiffres.

Exemple:

String phoneno = "+1-(800)-555-2468"; 
$phoneno.replaceAll("\D", ""); //Removes non-digit characters 
$PIN = $phoneno.substring(0,-4) //gives: 2468 

En outre, une autre façon, sans sous-chaîne:

String phoneno = "+1-(800)-555-2468"; 
$phoneno.replaceAll("\D", ""); //Removes non-digit characters 
$phoneno.replaceAll("(?=\d{5})\d", ""); //removes all but last 4 digits 
$PIN = $phoneno //gives: 2468