You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2018/09/27 21:43:52 UTC
svn commit: r1842176 -
/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
Author: sebb
Date: Thu Sep 27 21:43:52 2018
New Revision: 1842176
URL: http://svn.apache.org/viewvc?rev=1842176&view=rev
Log:
Simplify by using switch on char value; also don't convert to String unnecessarily
Modified:
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java?rev=1842176&r1=1842175&r2=1842176&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java (original)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java Thu Sep 27 21:43:52 2018
@@ -286,12 +286,6 @@ public class ColognePhonetic implements
* <li>small sharp s, German</li>
* </ul>
*/
- private static final char[][] PREPROCESS_MAP = new char[][]{
- {'\u00C4', 'A'}, // capital a, umlaut mark
- {'\u00DC', 'U'}, // capital u, umlaut mark
- {'\u00D6', 'O'}, // capital o, umlaut mark
- {'\u00DF', 'S'} // small sharp s, German
- };
/*
* Returns whether the array contains the key, or not.
@@ -321,10 +315,8 @@ public class ColognePhonetic implements
return null;
}
- text = preprocess(text);
-
- final CologneOutputBuffer output = new CologneOutputBuffer(text.length() * 2);
- final CologneInputBuffer input = new CologneInputBuffer(text.toCharArray());
+ final CologneInputBuffer input = new CologneInputBuffer(preprocess(text));
+ final CologneOutputBuffer output = new CologneOutputBuffer(input.length() * 2);
char nextChar;
@@ -423,23 +415,27 @@ public class ColognePhonetic implements
}
/**
- * Converts the string to upper case and replaces germanic characters as defined in {@link #PREPROCESS_MAP}.
+ * Converts the string to upper case and replaces Germanic umlaut characters
*/
- private String preprocess(String text) {
- text = text.toUpperCase(Locale.GERMAN);
-
- final char[] chrs = text.toCharArray();
+ private char[] preprocess(String text) {
+ // This converts German small sharp s (Eszett) to SS
+ final char[] chrs = text.toUpperCase(Locale.GERMAN).toCharArray();
for (int index = 0; index < chrs.length; index++) {
- if (chrs[index] > 'Z') {
- for (final char[] element : PREPROCESS_MAP) {
- if (chrs[index] == element[0]) {
- chrs[index] = element[1];
- break;
- }
- }
+ switch (chrs[index]) {
+ case '\u00C4': // capital A, umlaut mark
+ chrs[index] = 'A';
+ break;
+ case '\u00DC': // capital U, umlaut mark
+ chrs[index] = 'U';
+ break;
+ case '\u00D6': // capital O, umlaut mark
+ chrs[index] = 'O';
+ break;
+ default:
+ break;
}
}
- return new String(chrs);
+ return chrs;
}
}