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

问题描述 投票:-2回答:3

我想知道字符串中的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 = ?

希望您会明白:)

c# file count int substring
3个回答
1
投票

代替使用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


0
投票

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

[除了千位分隔符和十进制分隔符之外,甚至还有不同的想法如何对文化之间的数字进行分组-例如印度的LakhCrore

如果问题与以10为底的数字有关,则将无法正常工作。但是,我记得最近的一种情况,有人计算出除法小数部分有多少个重复数字。我认为这段代码将适合您的情况:

int current = Input;
int Digits = 1;

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

0
投票

您可以将字符串分割成定界符并将其用作数组。

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]);
© www.soinside.com 2019 - 2024. All rights reserved.