我的网站包含网址中的语言说明符(例如http://example.org/English/rest/of/url.aspx)
使用正则表达式,我可以解析URL的语言:
Match match = Regex.Match(HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath, "^~/(?<language>[^/]+)/");
然后我可以检查已解析的语言并确定语言是否符合我的要求:
match.Groups["language"].Value
我现在正在寻找一种比野蛮的字符串操作更简单的方法,以便在需要时用新语言替换该语言。
因此,上述网址将更改为http://example.org/German/rest/of/url.aspx
我最初的想法是一个简单的搜索/替换,但由于页面名称或其他URL片段中可能包含语言名称,因此无法正常工作。我只关心根URL之后的第一个片段。
更改URL后,我会重定向用户并完成它。
答案 0 :(得分: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)));
答案 1 :(得分:0)
你可以创建一个Uri对象然后使用PathAndQuery提取当时的路径拆分'/'并替换第一个实例然后再构建你的uri