Author: ggregory
Date: Thu Mar 8 22:15:35 2012
New Revision: 1298617
URL: http://svn.apache.org/viewvc?rev=1298617&view=rev
Log:
Cache Patterns.
Modified:
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Nysiis.java
Modified:
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Nysiis.java
URL:
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Nysiis.java?rev=1298617&r1=1298616&r2=1298617&view=diff
==============================================================================
---
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Nysiis.java
(original)
+++
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Nysiis.java
Thu Mar 8 22:15:35 2012
@@ -17,6 +17,8 @@
package org.apache.commons.codec.language;
+import java.util.regex.Pattern;
+
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.StringEncoder;
@@ -46,6 +48,15 @@ public class Nysiis implements StringEnc
private static final char[] CHARS_NN = new char[] { 'N', 'N' };
private static final char[] CHARS_S = new char[] { 'S' };
private static final char[] CHARS_SSS = new char[] { 'S', 'S', 'S' };
+
+ private static final Pattern PAT_MAC = Pattern.compile("^MAC");
+ private static final Pattern PAT_KN = Pattern.compile("^KN");
+ private static final Pattern PAT_K = Pattern.compile("^K");
+ private static final Pattern PAT_PH_PF = Pattern.compile("^(PH|PF)");
+ private static final Pattern PAT_SCH = Pattern.compile("^SCH");
+ private static final Pattern PAT_EE_IE = Pattern.compile("(EE|IE)$");
+ private static final Pattern PAT_DT_ETC =
Pattern.compile("(DT|RT|RD|NT|ND)$");
+
private static final char SPACE = ' ';
private static final int TRUE_LENGTH = 6;
@@ -194,16 +205,16 @@ public class Nysiis implements StringEnc
// Translate first characters of name:
// MAC -> MCC, KN -> NN, K -> C, PH | PF -> FF, SCH -> SSS
- str = str.replaceFirst("^MAC", "MCC");
- str = str.replaceFirst("^KN", "NN");
- str = str.replaceFirst("^K", "C");
- str = str.replaceFirst("^(PH|PF)", "FF");
- str = str.replaceFirst("^SCH", "SSS");
-
+ str = PAT_MAC.matcher(str).replaceFirst("MCC");
+ str = PAT_KN.matcher(str).replaceFirst("NN");
+ str = PAT_K.matcher(str).replaceFirst("C");
+ str = PAT_PH_PF.matcher(str).replaceFirst("FF");
+ str = PAT_SCH.matcher(str).replaceFirst("SSS");
+
// Translate last characters of name:
// EE -> Y, IE -> Y, DT | RT | RD | NT | ND -> D
- str = str.replaceFirst("(EE|IE)$", "Y");
- str = str.replaceFirst("(DT|RT|RD|NT|ND)$", "D");
+ str = PAT_EE_IE.matcher(str).replaceFirst("Y");
+ str = PAT_DT_ETC.matcher(str).replaceFirst("D");
// First character of key = first character of name.
StringBuffer key = new StringBuffer(str.length());