このメソッドでは0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-
、URI文字列に「」文字のみを使用できるようにする必要があります。
6558 次
3 に答える
36
これが一般的なコンセンサスです。
文字列を小文字にします。
string = string.toLowerCase();
すべての文字を正規化し、すべての発音区別符号を取り除きます(たとえば、é、ö、àがe、o、aになるようにします)。
string = Normalizer.normalize(string, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
残りのすべての英数字以外の文字をで置き換え
-
、必要に応じて折りたたんでください。string = string.replaceAll("[^\\p{Alnum}]+", "-");
だから、要約:
public static String toPrettyURL(String string) {
return Normalizer.normalize(string.toLowerCase(), Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
.replaceAll("[^\\p{Alnum}]+", "-");
}
于 2011-01-03T01:37:51.570 に答える
4
次の正規表現は、アルゴリズムと同じことを行います。私はこの種のことをするための図書館を知りません。
文字列s=入力 .replaceAll( "?-?"、 "-")//ハイフンの前後のスペースを削除します .replaceAll( "[']"、 "-")//スペースと引用符をハイフンに変換します .replaceAll( "[^ 0-9a-zA-Z-]"、 ""); //許可された文字セットにないものをすべて削除します
于 2011-01-02T23:20:42.400 に答える
1
詳細情報を検索する場合、これらは一般に「スラッグ」と呼ばれます。
文字列からSEOに適したダッシュ区切りのURLを作成するにはどうすればよいですか?などの他の回答を確認することをお勧めします。とDjangoslugifyをUnicode文字列で正しく機能させる方法は?
それらはjavascriptよりもC#とPythonをカバーしていますが、スラッグの規則とそれらを作成するときに直面する可能性のある問題(一意性、ユニコード正規化の問題など)について言語に依存しない議論があります。
于 2011-01-03T01:49:26.813 に答える