모든 분음 기호를 기본 문자로 변환 한 다음 Char.IsLetterOrDigit
을 사용하여 문자 또는 숫자가 아닌 문자를 제거합니다.
그런 다음 모든 공백을 대시 하나로 바꿉니다.
이것은 우리 소프트웨어에서 사용하는 것입니다.
/// <summary>
/// Convert a name into a string that can be appended to a Uri.
/// </summary>
private static string EscapeName(string name)
{
if (!string.IsNullOrEmpty(name))
{
name = NormalizeString(name);
// Replaces all non-alphanumeric character by a space
StringBuilder builder = new StringBuilder();
for (int i = 0; i < name.Length; i++)
{
builder.Append(char.IsLetterOrDigit(name[i]) ? name[i] : ' ');
}
name = builder.ToString();
// Replace multiple spaces into a single dash
name = Regex.Replace(name, @"[ ]{1,}", @"-", RegexOptions.None);
}
return name;
}
/// <summary>
/// Strips the value from any non english character by replacing thoses with their english equivalent.
/// </summary>
/// <param name="value">The string to normalize.</param>
/// <returns>A string where all characters are part of the basic english ANSI encoding.</returns>
/// <seealso cref="http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net"/>
private static string NormalizeString(string value)
{
string normalizedFormD = value.Normalize(NormalizationForm.FormD);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < normalizedFormD.Length; i++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(normalizedFormD[i]);
if (uc != UnicodeCategory.NonSpacingMark)
{
builder.Append(normalizedFormD[i]);
}
}
return builder.ToString().Normalize(NormalizationForm.FormC);
}
생성 된 이름을 고유 ID로 사용하는 것에 대해서는 보증합니다. 생성자 이름을 SEO 도우미로 사용하지만 키 확인자는 사용하지 마십시오. stackoverflow가 페이지를 참조하는 방법을 살펴보면 :
http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net
^--ID ^--Unneeded name but helpful for bookmarks and SEO
여기에서 ID를 찾을 수 있습니다. 같은 페이지에이 두 URL 포인트 :
http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net
http://stackoverflow.com/questions/249087/
재미 있고 유용한 코드를 보내 주셔서 감사합니다! 나는 id와 name의 조합을 제안하기도하고 stackoverflow도 구현하기로 결정했습니다. – DanDan
나는이 "가짜"SEO를 좋아하지 않는다. URL의 절반은 의미가 없다. 또한이 페이지는 http://stackoverflow.com/questions/2095957/and-now-for-something-completely-different – DisgruntledGoat
에서 찾을 수 있습니다. 매우 흥미로운 코드입니다. 공유 해 주셔서 감사합니다. –