0
私はいくつかのスマートな文字でこれを置き換えることができますどのように特殊文字を含むスマートURLを作成するにはどうすればよいですか?
など、私は私のアカデミーコースのURLを作成する必要があり、これらのコースは+
、
#
、
?
、
_
、
-
などの特殊文字を含むていますか?エンコーディングなしでそれを行う方法はありますか?
私はいくつかのスマートな文字でこれを置き換えることができますどのように特殊文字を含むスマートURLを作成するにはどうすればよいですか?
など、私は私のアカデミーコースのURLを作成する必要があり、これらのコースは+
、
#
、
?
、
_
、
-
などの特殊文字を含むていますか?エンコーディングなしでそれを行う方法はありますか?
URLスラッグについて質問している場合は、this answerをご覧ください。
以下にコードが含まれています。
/// <summary>
/// Produces optional, URL-friendly version of a title, "like-this-one".
/// hand-tuned for speed, reflects performance refactoring contributed
/// by John Gietzen (user otac0n)
/// </summary>
public static string URLFriendly(string title)
{
if (title == null) return "";
const int maxlen = 80;
int len = title.Length;
bool prevdash = false;
var sb = new StringBuilder(len);
char c;
for (int i = 0; i < len; i++)
{
c = title[i];
if ((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'))
{
sb.Append(c);
prevdash = false;
}
else if (c >= 'A' && c <= 'Z')
{
// tricky way to convert to lowercase
sb.Append((char)(c | 32));
prevdash = false;
}
else if (c == ' ' || c == ',' || c == '.' || c == '/' ||
c == '\\' || c == '-' || c == '_' || c == '=')
{
if (!prevdash && sb.Length > 0)
{
sb.Append('-');
prevdash = true;
}
}
else if ((int)c >= 128)
{
int prevlen = sb.Length;
sb.Append(RemapInternationalCharToAscii(c));
if (prevlen != sb.Length) prevdash = false;
}
if (i == maxlen) break;
}
if (prevdash)
return sb.ToString().Substring(0, sb.Length - 1);
else
return sb.ToString();
}
あなたはRemapInternationalCharToAscii
hereを見つけることができます。
あなたは、これらの線に沿って何かするだろう:コメント欄でご質問パー
string courseName = "Biology #101 - A Beginner's Guide!";
string urlFriendlyCourseName = URLFriendly(courseName);
//outputs biology-101-a-beginners-guide
アップデートを、あなたはURLでごCourseID
を含めるとDBのエントリと一致することを使用することができます(つまり、12345
と一致するのはhttp://mycourses.com/12345/biology-101-a-beginners-guide/
)。 CourseID
、CourseSlug
、またはその両方に一致するように、URLFriendly(courseName)
の結果をDB列(例:CourseSlug
)に保存する必要があります。
その罰金を符号化するため。今私のケースでは、URLからその文字列をデコードして、データベースに送信したいと考えています。それに基づいて、タイトルがDbで一致する場合、いくつかのデータが返されます。どのようにそれを処理するには? –
更新された回答をご覧ください。 – trashr0x