Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import java.lang.StringBuilder;
import java.io.StringReader;
import java.io.IOException;
 
public class AccentManager {
 
	public String forUrl (String _string){
		StringBuilder _sBuild = null;
		try{
			StringReader _sRead = new StringReader(_string);
			_sBuild = new StringBuilder();
 
			char c = (char)_sRead.read();
			while( c != -1){
				_sBuild.append(convertAccent(c));
				c = (char)_sRead.read();
			}
			_sRead.close();
		}catch (IOException e) {e.printStackTrace();}
		return _sBuild.toString();
	}
 
	public String wAndWoAccents (String _string){
		StringBuilder _sBuild = null;
		try{
		StringReader _sRead = new StringReader(_string);
		_sBuild = new StringBuilder();
 
		char c = (char)_sRead.read();
		while( c != -1){
			_sBuild.append(removeAccent(c));
			c = (char)_sRead.read();
		}
		_sRead.close();
		}catch (IOException e) {e.printStackTrace();}
		return _sBuild.toString();
	}
 
	private String convertAccent(char c) {
		if (c == 'à') return "%E0";
		if (c == 'á') return "%E1";
		if (c == 'â') return "%E2";
		if (c == 'ã') return "%E3";
		if (c == 'ä') return "%E4";
		if (c == 'å') return "%E5";
		if (c == 'æ') return "%E6";
		if (c == 'ç') return "%E7";
		if (c == 'è') return "%E8";
		if (c == 'é') return "%E9";
		if (c == 'ê') return "%EA";
		if (c == 'ë') return "%EB";
		if (c == 'ì') return "%EC";
		if (c == 'í') return "%ED";
		if (c == 'î') return "%EE";
		if (c == 'ï') return "%EF";
 
		if (c == 'À') return "%C0";
		if (c == 'Á') return "%C1";
		if (c == 'Â') return "%C2";
		if (c == 'Ã') return "%C3";
		if (c == 'Ä') return "%C4";
		if (c == 'Å') return "%C5";
		if (c == 'Æ') return "%C6";
		if (c == 'Ç') return "%C7";
		if (c == 'È') return "%C8";
		if (c == 'É') return "%C9";
		if (c == 'Ê') return "%CA";
		if (c == 'Ë') return "%CB";
		if (c == 'Ì') return "%CC";
		if (c == 'Í') return "%CD";
		if (c == 'Î') return "%CE";
		if (c == 'Ï') return "%CF";
		return "" + c;
	}
 
	private String removeAccent(char c) {
		if (c == 'à') return c+"|a";
		if (c == 'á') return c+"|a";
		if (c == 'â') return c+"|a";
		if (c == 'ã') return c+"|a";
		if (c == 'ä') return c+"|a";
		if (c == 'å') return c+"|a";
		if (c == 'æ') return c+"|(?:ae)";
		if (c == 'ç') return c+"|c";
		if (c == 'è') return c+"|e";
		if (c == 'é') return c+"|e";
		if (c == 'ê') return c+"|e";
		if (c == 'ë') return c+"|e";
		if (c == 'ì') return c+"|i";
		if (c == 'í') return c+"|i";
		if (c == 'î') return c+"|i";
		if (c == 'ï') return c+"|i";
 
		if (c == 'À') return c+"|A";
		if (c == 'Á') return c+"|A";
		if (c == 'Â') return c+"|A";
		if (c == 'Ã') return c+"|A";
		if (c == 'Ä') return c+"|A";
		if (c == 'Å') return c+"|A";
		if (c == 'Æ') return c+"|(?:AE)";
		if (c == 'Ç') return c+"|C";
		if (c == 'È') return c+"|E";
		if (c == 'É') return c+"|E";
		if (c == 'Ê') return c+"|E";
		if (c == 'Ë') return c+"|E";
		if (c == 'Ì') return c+"|I";
		if (c == 'Í') return c+"|I";
		if (c == 'Î') return c+"|I";
		if (c == 'Ï') return c+"|I";
		return "" + c;
	}
 
 
}
et à l'appel de la méthode forUrl()

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:2882)
	at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
	at java.lang.StringBuilder.append(StringBuilder.java:119)
	at AccentManager.forUrl(AccentManager.java:15)
	at TrigramFinder.findNext(TrigramFinder.java:20)
	at TrigramBasedSynthesis.main(TrigramBasedSynthesis.java:17)
la string passée en argument à forUrl mesure 3 caractères de long.