Advertisement
Anzak

Credit card number replace

Apr 30th, 2016
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.01 KB | None | 0 0
  1.     String source = " <card>1234567890123456</card> t <card>1234 5678 9012 3456</card>";
  2.     String result1, result2;
  3.  
  4.     // Variant 1
  5.     Pattern p1 = Pattern.compile("(<card>[\\d\\s]{4,})([\\s]{0,})([\\d]{2})(?:[\\d]{2})([\\s]{0,})(?:[\\d]{4})([\\s]{0,})([\\d\\s]{4}</card>)");
  6.     result1 = p1.matcher(source).replaceAll("$1$2$3**$4****$5$6");
  7.  
  8.     // Variant 2
  9.     Pattern p2 = Pattern.compile("<card>[\\d\\s]{12,20}</card>");
  10.     Matcher m = p2.matcher(source);
  11.     result2 = source;
  12.     while (m.find())
  13.       result2 = result2.substring(0, m.start() + 12)
  14.               + result2.substring(m.start() + 12, m.end() - 11).replaceAll("\\d", "*")
  15.               + result2.substring(m.end() - 11, result2.length());
  16.  
  17.     System.out.println(source);  // <card>1234567890123456</card> t <card>1234 5678 9012 3456</card>
  18.     System.out.println(result1); // <card>123456******3456</card> t <card>1234 56** **** 3456</card>
  19.     System.out.println(result2); // <card>123456******3456</card> t <card>1234 5*** **** 3456</card>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement