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

时间:2016-10-22 17:43:26

标签: c#

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

此示例计算(和)符号的匹配。

答案 2 :(得分:0)

要在文本框中获取总金额字符,您只需使用TextLength

e.g。

var totalAmountOfCharacters = textBox1.TextLength.ToString();

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

e.g。

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 ==')');

答案 3 :(得分:0)

我发现有点有趣的是,该表达式中有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: *

答案 4 :(得分:-1)

var strEquation = textbox1.Text; // 5x-2(3y + 2)* 3y(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;

让我知道它是否有效?