我想计算我在文本框中使用的所有字符数。 例如:如果我在文本框中写下这个等式: 5X-2(3Y + 2)* 3Y(8) 那么我应该编写什么代码或行来计算这里使用的所有括号?
答案 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;
让我知道它是否有效?