package com.gisgraphy.street;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* * @author <a href="mailto:david.masclet@gisgraphy.com">David Masclet</a>
*
*/
public class HouseNumberUtil {
private static Pattern DEFAULT_PATTERN = Pattern.compile("[\\-\\–\\一]?(\\d+)[^\\d]*",Pattern.CASE_INSENSITIVE);
private static Pattern CZ_SK_PATTERN = Pattern.compile("(?:(?:\\d+[/\\-\\–\\一])|(?:[^\\d]?))(\\d+)",Pattern.CASE_INSENSITIVE);
public static String normalizeNumber(String numberAsString){
if (numberAsString ==null){
return null;
}
Matcher matcher = DEFAULT_PATTERN.matcher(numberAsString);
if (matcher.find()){
return matcher.group(1);
}
return null;
}
public static Integer normalizeNumberToInt(String houseNumberAsString){
if (houseNumberAsString != null){
String normalizedStr = normalizeNumber(houseNumberAsString);
if (normalizedStr!= null){
try {
return Integer.parseInt(normalizedStr);
} catch (NumberFormatException e) {
}
}
}
return null;
}
/**
* specific case for slovakia and czech
* see http://www.pitt.edu/~votruba/qsonhist/housenumbersslovakia.html
*/
public static String normalizeSkCzNumber(String numberAsString){
if (numberAsString ==null){
return null;
}
Matcher matcher = CZ_SK_PATTERN.matcher(numberAsString);
if (matcher.find()){
return matcher.group(1);
}
return null;
}
public static Integer normalizeSkCzNumberToInt(String houseNumberAsString){
if (houseNumberAsString != null){
String normalizedStr = normalizeSkCzNumber(houseNumberAsString);
if (normalizedStr!= null){
try {
return Integer.parseInt(normalizedStr);
} catch (NumberFormatException e) {
}
}
}
return null;
}
}