Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算我在文本框c中使用的所有字符#_C# - Fatal编程技术网

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

C# 计算我在文本框c中使用的所有字符#,c#,C#,我想计算我在文本框中使用的所有字符数。 例如:如果我在文本框中写下这个等式: 5x-2(3y+2)*3y(8) 那么我应该写什么代码或行来计算这里使用的所有括号呢?字符串是一个字符序列,所以使用这个 textbox.Text.Count(c => c == '(' || c == ')'); 有点复杂,但更优雅: var charCount = textbox.Text .GroupBy(c => c) .ToDictionary(x => x.Key, x

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

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

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

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

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

本例统计(和)符号的匹配情况。

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


让我知道它是否有效?

要获取文本框中字符的总数,只需使用
TextLength

e、 g

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

e、 g


我发现这个表达式中有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: *


非常可读的解决方案:)你必须跳出括号。@Slai,不,那样不行不行不行。我正在开发c#windows窗体应用程序更新答案。添加@以转义字符串。它可以工作。它给出了答案9。你能给我解释一下吗?c=>Char.IsNumber(c)它对strEquation上的每个字符执行的操作是,检查字符“c”是否为数字或字母,如果其为真,则增加计数..最后返回总结果。linq表达式而不是for循环。@Nishantverma您的答案是给出数字和字母的数量。OP的问题是括号的数量。@Jim谢谢你指出我漏掉了那行代码:)你的问题是什么
我应该写什么代码或行来计算这里使用的所有括号?
计算我在文本框中使用的所有字符
或其他什么?我应该写什么代码或行来计算所有括号此处使用括号(文本框)?我不想显示所有字符,但我使用的那些特定字符,因为您的原始帖子指出了两个问题。。。我的答案更新为两个可用答案。一个用于所有字符,一个用于特定字符。第二个eg适用于我的代码。。谢谢:)@haish查看这是否是您问题的正确答案,然后请将正确答案标记为正确答案。
Value
甚至不是
TextBox
类的定义。令人难以置信的是,这得到了一个更高的票数…@jim yeap,我很早以前就用过WinForms,但不记得财产的确切名称。答案是正确的,类似于你之前给出的答案。属性名无效的问题是什么?顺便说一句,这是一个如此大的问题——很多人都不想得到思考所需的答案,甚至不想回头去理解文本的价值。明白你的意思,但是有人问这样的问题对编程来说是非常陌生的,所以他会遇到一个使用错误定义的大问题;)
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 ==')');
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: *