我想知道字符串中的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”,并且与第一组具有相同的定义。
您可以使用Strings
将它们打印到ToString()
,然后调用String.Lenght。虽然从技术上讲string不是char [](即使它适当地包装了一个char),也可以将其视为一个。但是,这可能会给您带来错误的结果。要打印或解析的字符串表示形式,很大程度上取决于Windows中设置的用户区域设置。
[除了千位分隔符和十进制分隔符之外,甚至还有不同的想法如何对文化之间的数字进行分组-例如印度的Lakh和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]);