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

C#如何找出两个不同的数字在一个字符串中的长度?,c#,file,count,int,substring,C#,File,Count,Int,Substring,我想知道字符串中的两个数字有多大。困难的是这两个数字都是变量,我不知道它们有多长,它们随着时间而增长。程序将变量写入txt文件。现在我读取文件的所有行并将其放入字符串中。在这之后,我需要这两个数字作为一个int来确定这两个变量,并与它们一起计数。 示例代码: int num1 = 0; int num2 = 0; string text = ""; //imagine foreach keypress B num1++ and foreach keypress N num2++ File.Wr

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

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 = ?

希望您能理解:)

可以使用正则表达式,而不是使用子字符串。比如说,

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);
}
var regex=new regex(@“=\s*(?\d*),\s*Num2\s*=\s*(?\d*)”;
var matches=regex.Match(文本);
如果(匹配。成功)
{
var num1=Int32.Parse(匹配.Groups[“Number1”].Value);
var num2=Int32.Parse(匹配.Groups[“Number2”].Value);
}
正则表达式表示两个组(由“(?[表达式]”)表示),第一个组由“=”前面的数字和空格组成。第一组后面是“,”和空白字符。后面是第二组,前面是文本“Num2”,其定义与第一组相同


您可以使用
ToString()
将它们打印到
字符串中,然后调用。虽然从技术上讲,字符串不是char[](即使它可能是一个包装字符),但可以将其视为一个字符。然而,这可能会给你错误的结果。要打印或解析的字符串表示形式在很大程度上取决于Windows中设置的用户区域性

除了不同的千和十进制分隔符之外,在不同的文化中如何对数字进行分组甚至有不同的想法——比如印度和印度

如果问题是关于以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]);

是的,谢谢你。你能解释一下正则表达式模式吗:)我不明白:/@Luuke我添加了一个简短的描述。如果你需要更多,请告诉我