我需要计算字符串 END 的点数。 字符串中间的点数不相关,不应该是反作用。
如何做到这一点?
string sample = "This.is.a.sample.string.....";
对于上面的示例,正确的答案是5,因为字符串末尾有5个点。
由于性能原因,我更喜欢快速解决方案。不知道正则表达式
\.*$
在这种情况下应该使用。
答案 0 :(得分:4)
从字符串的结尾开始,然后返回char by char,直到它不是一个点:
string sample = "This.is.a.sample.string....."
int count = 0;
for (int i = sample.Length - 1; i >= 0; i--)
{
if (sample[i] != '.') break;
count++;
}
答案 1 :(得分:4)
使用Linq:
var test = "this.is.a.test........";
var count = test.ToCharArray().Reverse().TakeWhile(q => q == '.').Count();
将字符串转换为数组,反转,然后转换为字符='。'。统计结果。
答案 2 :(得分:2)
使用扩展方法的简单解决方案。
var test = "this.is.a.test........";
Console.WriteLine(test.CountTrailingDots());
public static int CountTrailingDots(this string value)
{
return value.Length - value.TrimEnd('.').Length;
}
答案 3 :(得分:0)
int points = Regex.Match("This.is.a.sample.string....", @"^[\w\W]*?([.]*+)$").Groups[1].Value.Length;
说明强>
*+
=匹配尽可能多的字符
*?
=匹配尽可能少的字符。
答案 4 :(得分:0)
它可以是......
string sample = "This.is.a.sample.string.....";
int count = 0;
if(sample.EndsWith("."))
count = sample.Substring(sample.TrimEnd('.').Length).Length;