1 | |
|
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
package org.apache.commons.codec.language; |
19 | |
|
20 | |
|
21 | |
|
22 | |
|
23 | |
|
24 | |
|
25 | |
|
26 | |
|
27 | |
|
28 | |
|
29 | |
|
30 | |
|
31 | |
|
32 | |
|
33 | 14 | public class Caverphone2 extends AbstractCaverphone { |
34 | |
|
35 | |
private static final String TEN_1 = "1111111111"; |
36 | |
|
37 | |
|
38 | |
|
39 | |
|
40 | |
|
41 | |
|
42 | |
|
43 | |
|
44 | |
@Override |
45 | |
public String encode(String source) { |
46 | 265 | String txt = source; |
47 | 265 | if (txt == null || txt.length() == 0) { |
48 | 2 | return TEN_1; |
49 | |
} |
50 | |
|
51 | |
|
52 | 263 | txt = txt.toLowerCase(java.util.Locale.ENGLISH); |
53 | |
|
54 | |
|
55 | 263 | txt = txt.replaceAll("[^a-z]", ""); |
56 | |
|
57 | |
|
58 | 263 | txt = txt.replaceAll("e$", ""); |
59 | |
|
60 | |
|
61 | 263 | txt = txt.replaceAll("^cough", "cou2f"); |
62 | 263 | txt = txt.replaceAll("^rough", "rou2f"); |
63 | 263 | txt = txt.replaceAll("^tough", "tou2f"); |
64 | 263 | txt = txt.replaceAll("^enough", "enou2f"); |
65 | 263 | txt = txt.replaceAll("^trough", "trou2f"); |
66 | |
|
67 | 263 | txt = txt.replaceAll("^gn", "2n"); |
68 | |
|
69 | |
|
70 | 263 | txt = txt.replaceAll("mb$", "m2"); |
71 | |
|
72 | |
|
73 | 263 | txt = txt.replaceAll("cq", "2q"); |
74 | 263 | txt = txt.replaceAll("ci", "si"); |
75 | 263 | txt = txt.replaceAll("ce", "se"); |
76 | 263 | txt = txt.replaceAll("cy", "sy"); |
77 | 263 | txt = txt.replaceAll("tch", "2ch"); |
78 | 263 | txt = txt.replaceAll("c", "k"); |
79 | 263 | txt = txt.replaceAll("q", "k"); |
80 | 263 | txt = txt.replaceAll("x", "k"); |
81 | 263 | txt = txt.replaceAll("v", "f"); |
82 | 263 | txt = txt.replaceAll("dg", "2g"); |
83 | 263 | txt = txt.replaceAll("tio", "sio"); |
84 | 263 | txt = txt.replaceAll("tia", "sia"); |
85 | 263 | txt = txt.replaceAll("d", "t"); |
86 | 263 | txt = txt.replaceAll("ph", "fh"); |
87 | 263 | txt = txt.replaceAll("b", "p"); |
88 | 263 | txt = txt.replaceAll("sh", "s2"); |
89 | 263 | txt = txt.replaceAll("z", "s"); |
90 | 263 | txt = txt.replaceAll("^[aeiou]", "A"); |
91 | 263 | txt = txt.replaceAll("[aeiou]", "3"); |
92 | 263 | txt = txt.replaceAll("j", "y"); |
93 | 263 | txt = txt.replaceAll("^y3", "Y3"); |
94 | 263 | txt = txt.replaceAll("^y", "A"); |
95 | 263 | txt = txt.replaceAll("y", "3"); |
96 | 263 | txt = txt.replaceAll("3gh3", "3kh3"); |
97 | 263 | txt = txt.replaceAll("gh", "22"); |
98 | 263 | txt = txt.replaceAll("g", "k"); |
99 | 263 | txt = txt.replaceAll("s+", "S"); |
100 | 263 | txt = txt.replaceAll("t+", "T"); |
101 | 263 | txt = txt.replaceAll("p+", "P"); |
102 | 263 | txt = txt.replaceAll("k+", "K"); |
103 | 263 | txt = txt.replaceAll("f+", "F"); |
104 | 263 | txt = txt.replaceAll("m+", "M"); |
105 | 263 | txt = txt.replaceAll("n+", "N"); |
106 | 263 | txt = txt.replaceAll("w3", "W3"); |
107 | 263 | txt = txt.replaceAll("wh3", "Wh3"); |
108 | 263 | txt = txt.replaceAll("w$", "3"); |
109 | 263 | txt = txt.replaceAll("w", "2"); |
110 | 263 | txt = txt.replaceAll("^h", "A"); |
111 | 263 | txt = txt.replaceAll("h", "2"); |
112 | 263 | txt = txt.replaceAll("r3", "R3"); |
113 | 263 | txt = txt.replaceAll("r$", "3"); |
114 | 263 | txt = txt.replaceAll("r", "2"); |
115 | 263 | txt = txt.replaceAll("l3", "L3"); |
116 | 263 | txt = txt.replaceAll("l$", "3"); |
117 | 263 | txt = txt.replaceAll("l", "2"); |
118 | |
|
119 | |
|
120 | 263 | txt = txt.replaceAll("2", ""); |
121 | 263 | txt = txt.replaceAll("3$", "A"); |
122 | 263 | txt = txt.replaceAll("3", ""); |
123 | |
|
124 | |
|
125 | 263 | txt = txt + TEN_1; |
126 | |
|
127 | |
|
128 | 263 | return txt.substring(0, TEN_1.length()); |
129 | |
} |
130 | |
|
131 | |
} |