package routines; import java.util.regex.*; public class UserString { public static String MatchField(String sourceStr, String patternStr, Integer fieldNo) { String matchedStr = ""; if (fieldNo == null) { throw new UnsupportedOperationException("fieldNo is supposed to be NOT NULL!!"); } if (patternStr == null) { return ""; } if (sourceStr == null) { return ""; } patternStr = formatPatternDStoTld(patternStr); Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(sourceStr); if (matcher.find()) { matchedStr = matcher.group(fieldNo); } else { matchedStr = ""; } return matchedStr; } public static String formatPatternDStoTld(String input) { StringBuilder output = new StringBuilder(); String outputStr = ""; for (int i = 0 ; i < input.length() ; i++) { Character firstChar = input.charAt(i); if (Character.isDigit(firstChar)) { Character secondChar = input.charAt(i + 1); int occur = Integer.parseInt("" + firstChar); if (Character.isDigit(secondChar)) { occur = (occur * 10) + Integer.parseInt("" + secondChar); i++; secondChar = input.charAt(i + 1); } if (Character.isLetter(secondChar)) { if (secondChar == 'A') { output.append("([a-zA-Z]"); } else if (secondChar == 'N') { output.append("(\\d"); } else if (secondChar == 'X') { output.append("([a-zA-Z0-9 ]"); } if (occur == 0) { output.append("*)"); } else { output.append("{" + occur + "," + occur + "})"); } i++; } else { output.append("(" + firstChar + ")"); } } else { output.append("(" + firstChar + ")"); } } outputStr = output.toString(); return outputStr; } }
0 Comments