2014-02-10 49 views
2
創造一個安全的網址

我用Java編寫一個庫,創建一個從文件名的這樣一個名單的網址:規範化的String在Java中

final String domain = "http://www.example.com/"; 

String filenames[] = {"Normal text","Ich weiß nicht", "L'ho inserito tra i princìpi"}; 

System.out.println(domain+normalize(filenames[0]); 
//Prints "http://www.example.com/Normal_text" 
System.out.println(domain+normalize(filenames[1]); 
//Prints "http://www.example.com/Ich_weib_nicht" 
System.out.println(domain+normalize(filenames[2]); 
//Prints "http://www.example.com/L_ho_inserito_tra_i_principi" 

某處有一個公開方法的Java庫我在上面的代碼中使用了normalize

文學:

+1

看看這個:http://stackoverflow.com/questions/21489289/what-is-the-equivalent-of-stringbyfoldingwithoptionslocale-in-java/21489947#21489947 – PopoFibo

+1

@PopoFibo是的,它的工作原理!我從來沒有見過Java中的'Normalizer'類!非常感謝!你能用簡短的例子發表答案嗎? –

回答

3

從我以前的答案here考慮的內容,你可以使用java.text.Normalizer其接近在Java中的字符串正常化。正常化的一個例子是;

口音去除:

String accented = "árvíztűrő tükörfúrógép"; 
String normalized = Normalizer.normalize(accented, Normalizer.Form.NFD); 
normalized = normalized.replaceAll("[^\\p{ASCII}]", ""); 

System.out.println(normalized); 

給出;

arvizturo tukorfurogep 
1

假設你的意思是你想編碼字符串,使他們安全的網址。在這種情況下使用的URLEncoder:

final String domain = "http://www.example.com/"; 

String filenames[] = {"Normal text","Ich weiß nicht", "L'ho inserito tra i princìpi"}; 

System.out.println(domain + URLEncoder.encode(filenames[0], "UTF-8")); 
System.out.println(domain + URLEncoder.encode(filenames[1], "UTF-8")); 
System.out.println(domain + URLEncoder.encode(filenames[2], "UTF-8")); 
+0

不,因爲我不能使用來自'URLEncoder.encode()'方法的「特殊」字符(如%等)。我創建的URL必須是由特殊的XML驗證器驗證的結果。它不需要空格,沒有特殊的字符,等等 –

+0

所以他們不是URL,然後 – mikea

+0

不,他們是! XML包含元素列表,每個元素都有一個'rdf:about'屬性,其值爲URL –