001package ca.uhn.fhir.rest.server.interceptor.s13n.standardizers; 002 003/*- 004 * #%L 005 * HAPI FHIR - Server Framework 006 * %% 007 * Copyright (C) 2014 - 2022 Smile CDR, Inc. 008 * %% 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 * #L% 021 */ 022 023/** 024 * Standardizes phone numbers to fit 123-456-7890 pattern. 025 */ 026public class PhoneStandardizer implements IStandardizer { 027 028 public static final String PHONE_NUMBER_PATTERN = "(\\d{3})(\\d{3})(\\d+)"; 029 public static final String PHONE_NUMBER_REPLACE_PATTERN = "$1-$2-$3"; 030 031 @Override 032 public String standardize(String thePhone) { 033 StringBuilder buf = new StringBuilder(thePhone.length()); 034 for (char ch : thePhone.toCharArray()) { 035 if (Character.isDigit(ch)) { 036 buf.append(ch); 037 } 038 } 039 return buf.toString().replaceFirst(PHONE_NUMBER_PATTERN, PHONE_NUMBER_REPLACE_PATTERN); 040 } 041 042}