2014-12-04 4 views
0

У меня есть сайт, который включает в себя язык спецификатора в URLЗаменить Запрошенный URL Раздел

Используя Regex, я могу разобрать язык URL (напр http://example.org/English/rest/of/url.aspx.):

Match match = Regex.Match(HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath, "^~/(?<language>[^/]+)/"); 

I могу проверить разобранный из языка и определить, является ли язык, что я хочу, чтобы это было:

match.Groups["language"].Value 

Я теперь ищу более простой способ, чем скотские манипуляции со строками, чтобы заменить на если этот язык с новым языком при необходимости.

Так выше URL будет изменен на http://example.org/German/rest/of/url.aspx

Моей первоначальной мысли была простой поиск/замена, однако, что не будет работать, как название страницы или другие фрагменты URL может иметь название языка в них. Меня интересует только первый фрагмент после корневого URL.

После изменения URL я бы перенаправил пользователя и покончил с ним.

ответ

1

Или вы можете использовать Regex.Replace:

string requestUrl = "~/English/rest/of/url.aspx"; 
string targetLanguage = "German"; 
Match match = Regex.Match(requestUrl, "^~/(?<language>[^/]+)/"); 
if (match.Groups["language"].Value != targetLanguage) 
    Response.Redirect(Regex.Replace(requestUrl, "^~/[^/]+/", string.Format("~/{0}/", targetLanguage))); 
+0

Doh, прямо перед моим лицом. Работает отлично. Благодарю. – Nate222

0

вы можете создать то объект Uri использовать PathAndQuery, чтобы извлечь затем путь раскола «/» и заменить первый экземпляр затем построить ваши URI снова

Смежные вопросы