在Spring Framework中将字符串转换为其URL表示形式

时间:2014-05-13 09:33:47

标签: java spring spring-mvc

Spring Framework中是否有任何方法可以将字符串转换为其URL表示形式?例如,从Majstrovstvá v ľadovom hokejimajstrovstva-v-ladovom-hokeji

2 个答案:

答案 0 :(得分:5)

我不了解Spring,但您可以使用URLEncoder.encode并对网址进行编码(输出:Majstrovstv%C3%A1+v+%C4%BEadovom+hokeji

示例:

String input = "Majstrovstvá v ľadovom hokeji";
System.out.println(URLEncoder.encode(input, "UTF-8"));

答案 1 :(得分:0)

this answer增强示例,您可以这样做:

import java.text.Normalizer;
import java.util.regex.Pattern;

public class UrlifyString {
  public static String deAccent(String str) {
    String norm = Normalizer.normalize(str, Normalizer.Form.NFD);
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(norm).replaceAll("").replace(" ", "-").toLowerCase();
  }

  public static void main(String[] args) {
    System.out.println(deAccent("Majstrovstvá v ľadovom hokeji"));
  }
}

输出是:

  

majstrovstva-V-ladovom-hokeji


有一点需要注意的是,这是一个有损转换,所以没有办法从这个“简化”形式回到原始版本。因此,你不应该使用它作为任何资源的关键,我建议在文章中加入一个唯一的标识符,例如:

  

http://example.com/article/123/majstrovstva-v-ladovom-hokeji

Spring的@PathVariable可以很容易地透明地处理它。