计算我在c#文本框中使用的所有字符

本文关键字:字符 文本 计算 | 更新日期: 2023-09-27 18:14:15

我想计算在文本框中使用的所有字符数。例如:如果我在文本框中写下这个等式:5 x - 2 (3 y + 2) * 3 y (8)那么我应该写什么代码或行来计算这里使用的所有括号呢?

计算我在c#文本框中使用的所有字符

您可以使用正则表达式(Regexp)来计算您需要的任何内容,包括一次计算多个字符

Regex.Matches(input, @"')|'(").Count

这个例子计算(和)符号的匹配。

String是一个字符序列,所以只使用这个

textbox.Text.Count(c => c == '(' || c == ')');

有点复杂,但更优雅:

var charCount = textbox.Text
    .GroupBy(c => c)
    .ToDictionary(x => x.Key, x => x.Count());
var parenthesisCount = charCount['('] + charCount[')']; // 4
var yCount = charCount['y']; // 2

要获取文本框中字符的总数,您可以简单地使用TextLength

var totalAmountOfCharacters = textBox1.TextLength.ToString();

要获得特定字符数,可以使用Count

var open = textBox1.Text.Count(x => x == '(');
var close = textBox1.Text.Count(x => x == ')');
var total = open + close;

var total = textBox1.Text.Count(x => x == '(' || x ==')');

我发现在这个表达式中有7个独立的Unicode类别有点有趣。

var s = "5x-2(3y+2)*3y(8)";
var l = s.ToLookup(char.GetUnicodeCategory);
foreach (var g in l)
    Debug.Print($"{g.Key,20} {g.Count()}: {string.Join(" ", g)}");

打印:

  DecimalDigitNumber 6: 5 2 3 2 3 8
     LowercaseLetter 3: x y y
     DashPunctuation 1: -
     OpenPunctuation 2: ( (
          MathSymbol 1: +
    ClosePunctuation 2: ) )
    OtherPunctuation 1: *

var strEquation=textbox1.Text;//5 x - 2 (3 y + 2) * 3 y (8)

int x = strEquation.Count(c => Char.IsNumber(c)); // 6
int y = strEquation.Count(c => Char.IsLetter(c)); // 3
int z = strEquation.Count(c => Char.Equals('(')); // 4
int total=x+y+z;

让我知道它是否有效?