C# : 一次存储 2 个值的索引

本文关键字:索引 存储 一次 | 更新日期: 2023-09-27 17:57:03

>我正在尝试将单个字符串分成 3 个字符串,但我在使用indexOf
时遇到问题当我输入一个字符串时15,M,true i-e例如在输入中使用 2 个逗号

Console.Write("Enter Your Pyrimid Slot Number ; Block Number ; whether or not the block should be lit or not ?");
String pyrimidSLOT = Console.ReadLine();
int commaNUMBER = pyrimidSLOT.IndexOf(",");
String pyrimidSLOTNUMBER = pyrimidSLOT.Substring(0, commaNUMBER);
Console.WriteLine("Your Block Number is : " + pyrimidSLOTNUMBER);

代码在这里工作正常

string blockNUMBER = pyrimidSLOT.Substring(commaNUMBER + 1, commaNUMBER +1 );
Console.WriteLine("YOUR bLOCK nUMBER IS : " + blockNUMBER);

但是当我尝试使用上面的代码将"块号"与输入字符串分开时,它会输出 YOUR bLOCK nUMBER IS : M,t但是当我将代码更改为

string blockNUMBER = pyrimidSLOT.Substring(commaNUMBER + 1, commaNUMBER -1 );

为什么它不只存储第一个索引的值? commaNumber + 1是起始索引,commaNUMBER - 1是结束索引,这有什么意义吗?

C# : 一次存储 2 个值的索引

只需使用字符串。Split() 方法。例如:

string[] parts = pyramidSlot.Split(',');
Console.WriteLine("Your block number is {0}.", parts[0]);

这可以用字符串轻松完成。分裂

string[] parts = pyrimidSLOT.Split(',');
Console.WriteLine(parts[0]);
Console.WriteLine(parts[1]);
Console.WriteLine(parts[2]);

相反,使用 IndexOf,您需要自己拆分字符串,并记住字符串的第二个参数。子字符串是一个Length,这意味着你需要传递要从起始位置提取的字符数。

int firstComma = pyrimidSLOT.IndexOf(',');
string slot = pyrimidSLOT.Substring(0, firstComma);
int secondComma = pyrimidSLOT.IndexOf(",", firstComma + 1);
string block = pyrimidSLOT.Substring(firstComma + 1, secondComma - firstComma - 1);
string hi = pyrimidSLOT.Substring(secondComma +1);
Console.WriteLine(slot);
Console.WriteLine(block);
Console.WriteLine(hi);

当然,这假设您的输入字符串正好包含两个逗号,至少由一个字符分隔