计算字符串末尾的点数

时间:2017-07-05 10:27:28

标签: c# .net

我需要计算字符串 END 的点数。 字符串中间的点数不相关,不应该是反作用。

如何做到这一点?

string sample = "This.is.a.sample.string.....";

对于上面的示例,正​​确的答案是5,因为字符串末尾有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)

Using Regex

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;