C#如何找出一个字符串中两个不同的数字有多长?

C# How to find out how long are two different numbers in a string?

我想知道字符串中的 2 个数字有多大。困难的是这 2 个数字是变量,我不知道它们有多长,它们随着时间的推移而增长。该程序将变量写入一个 txt 文件。现在我读取文件的所有行并将其放入一个字符串中。在此之后,我需要将这两个数字作为一个整数来确定这两个变量,以便继续计算它们。 示例代码:

int num1 = 0;
int num2 = 0;
string text = "";

//imagine foreach keypress B num1++ and foreach keypress N num2++
File.WriteAllLines("C:\ExampleFile", $"Num1 = {num1}, Num2 = {num2}!");

// between this is a programm restart

text = File.ReadAllLines("C:\ExampleFile");

//now iwant to get the value of num1 and num2 
text.substring(6, num1.length) //something like this idk

num1 = ?
num2 = ?

希望你会明白:)

您可以使用正则表达式来代替使用 SubString。例如,

var regex = new Regex(@"=\s*(?<Number1>\d*),\s*Num2\s*=\s*(?<Number2>\d*)");

var matches = regex.Match(text);
if(matches.Success)
{
    var num1 = Int32.Parse(matches.Groups["Number1"].Value);
    var num2 = Int32.Parse(matches.Groups["Number2"].Value);
}

正则表达式表示两组(由“(?[expression])”表示),第一组由一个数字组成,前面有一个“=”和空格。第一组后跟一个“,”和空白字符。这之后是第二组,前面是文本"Num2"并且具有与第一组相同的定义。

Demo Code

您可以使用 ToString() 将它们打印到 Strings,然后调用 String.Lenght。虽然 string 在技术上不是 char[](即使它可能是一个包装),但它可以像一个一样对待。但是,这可能会给您带来错误的结果。要打印或解析的字符串表示形式在很大程度上取决于 Windows.

中设置的用户文化。

除了千位分隔符和小数点分隔符不同之外,在不同文化之间如何对数字进行分组也有不同的想法——比如印度 Lakh and Crore

如果问题是关于以 10 为基数的位数,这将不起作用。但是我记得最近的一个案例,有人计算出一个除法的小数部分有多少个重复数字。我认为这段代码适合您的情况:

int current = Input;
int Digits = 1;

while(current >= 10){
  current = current / 10;
  Digits++;
}

您可以将字符串拆分为分隔符并将其用作数组。

var input = $"Num1 = 123, Num2 = 456!"

//Results in the array { "Num1","123","Num2","456" }
var tokens = input.Split(new char[] { '=', ',', ' ', '!'}, StringSplitOptions.RemoveEmptyEntries);

var num1 = int.Parse(tokens[1]);
var num2 = int.Parse(tokens[3]);