有没有一种方法可以像我在这段代码中那样直接使用某些方法?
string strLink = txtLink.Text;
switch(strLink)
{
case strLink.StartsWith("www"):
strLink = "http://www." + strLink.Substring(3);
break;
case !strLink.StartsWith("www"):
strLink = "http://www." + strLink;
}
答案 0 :(得分:0)
不,case
语句的switch
部分中的表达式应该是编译时常量或default
。这可以是常量,枚举值或包含上述内容的表达式。
答案 1 :(得分:0)
不,遗憾的是switch
语句中的C#规范非常有限。您正在寻找的可能是if...else if
语法(可称不太好)string strLink = txtLink.Text;
if (strLink.StartsWith("www"))
{
strLink = "http://www." + strLink.Substring(3);
}
else //if(!strLink.StartsWith("www")) this line is, of course, not necessary
// since it's implied by the else, but that's
// what it would be otherwise
{
strLink = "http://www." + strLink;
}
。好的方法是:
{{1}}
答案 2 :(得分:0)
切换条件和大小写块之间不能使用不同的值类型。如果您只有两个案例,请使用if statement
。
string strLink = txtLink.Text;
if (strLink.StartsWith("www"))
{
strLink = "http://www." + strLink.Substring(3);
}
else
{
strLink = "http://www." + strLink;
}
答案 3 :(得分:0)
不,但你可以这样做:
string strLink = txtLink.Text;
string firstThreeChars = strLink.Substring(0,3);
switch(firstThreeChars)
{
case "www":
strLink = "http://www." + strLink.Substring(3);
break;
default:
strLink = "http://www." + strLink;
break;
}
但是,在我看来,您的代码可能存在一些逻辑问题。如果txtLink.Text为www.google.com
会怎样?您的输出不是http://www..google.com
吗?
说了这么多,如果这是你唯一的两个案例,我会建议更像:
string strLink = "google.com";
string newLink = "http://" + (strLink.StartsWith("www.") ? strLink : "www." + strLink);