第一个问题
您可以使用String.SubString()
:
string a = "I once was a string, then I got mutilated";
string lastTwentyCharactersOfA = a.Substring(Math.Max(0, a.Length - 20));
// returns "then I got mutilated"
应得的信用: 如果您的字符串的字符数少于您请求的字符数,此答案可以很好地确保您不会遇到异常。
第二个问题
您可以使用String.Contains()
:
string soup = "chicken noodle soup";
bool soupContainsChicken = soup.Contains("chicken"); // returns True
第三个问题
您不能覆盖String
该类的乘法运算符。这是一个密封的类,当然您无权访问源代码以使其成为partial
类或类似的东西。你有几个选项可以让你接近你想做的事情。一种是写一个扩展方法:
public static string MultiplyBy(this string s, int times)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < times; i++)
{
sb.Append(s);
}
return sb.ToString();
}
用法:
string lol = "lol";
string trololol = lol.MultiplyBy(5); // returns "lollollollollol"
或者,如果您想走运算符重载的路线,您可以编写一个自定义String
类,然后使用它。
public struct BetterString // probably not better than System.String at all
{
public string Value { get; set; }
public static BetterString operator *(BetterString s, int times)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < times; i++)
{
sb.Append(s.Value);
}
return new BetterString { Value = sb.ToString() };
}
}
用法:
BetterString lol = new BetterString { Value = "lol" };
BetterString trololol = lol * 5; // trololol.Value is "lollollollollol"
一般来说,你可以用System.String
和做很多事情System.Text.StringBuilder
。扩展方法的可能性几乎是无穷无尽的。如果您有兴趣了解这一切的来龙去脉,请查看 MSDN。