我有一個字符串,我想使url友好。該字符串可能看起來像這樣:A string with $trange characters!".
然後我想逃避所有不好的url字符,並最終與a-string-with-trange-characters
創建一個URL友好的字符串
在Groovy中完成此操作的最佳方法是什麼?
我有一個字符串,我想使url友好。該字符串可能看起來像這樣:A string with $trange characters!".
然後我想逃避所有不好的url字符,並最終與a-string-with-trange-characters
創建一個URL友好的字符串
在Groovy中完成此操作的最佳方法是什麼?
在很多情況下,你可能希望不是完全剝離非字母數字字符,而是把它們分解第一:
import java.text.Normalizer
println Normalizer.normalize("String with \$strang\u00E9 chars", Normalizer.Form.NFD)
.replaceAll(/[^A-z0-9 ]/, "")
.replaceAll(/ +/, "-")
在上面,\u00E9
是「E」。分解將其轉換爲字符'e'和組合標記'''。因此,當你應用轉換時,結果是'陌生'而不是'strang-'。
請注意,這不是獲取給定字符串的ASCII友好版本的全部內容......例如,它不會將'ß'轉換爲'ss'。我沒有意識到在Java/Groovy中使用toUpperCase()的最好方法是在初始字符串中使用toLowerCase(),這似乎有點「哈克」)。
+1分解觸摸 – vladr
只需謹慎一點:如果您有兩個不同的部分「奇怪」字符串,您的方法有時會將它們解析爲**相同的URL友好的等價物。希望當你將這些包含在一個實際的URL中時,你還將包含一個唯一的數字標識符。此外,要注意給定字符串完全「奇怪」的情況,例如'ノー'或'$$$!',因爲在這種情況下,您的結果將是空的,您必須小心如何將它集成到URL中以避免形式爲http:// host/some/path// id',結果應該在'path'和'id'之間。 – vladr