计算我在c#文本框中使用的所有字符
本文关键字:字符 文本 计算 | 更新日期: 2023-09-27 18:14:15
我想计算在文本框中使用的所有字符数。例如:如果我在文本框中写下这个等式:5 x - 2 (3 y + 2) * 3 y (8)那么我应该写什么代码或行来计算这里使用的所有括号呢?
您可以使用正则表达式(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;
让我知道它是否有效?