我怎样才能得到第二个逗号的索引?
How can I get the index of second comma?
//read
Console.Write("Please enter (pyramid slot number,block letter,whether or not the block should be lit): ");
string csvString = Console.ReadLine();
//location of comma
int firstComma = csvString.IndexOf(',');
int secondComma = csvString.IndexOf(',', firstComma + 1);
//extract slot number of pyramid
int slotNumber = int.Parse(csvString.Substring(0, firstComma));
string blockLetter = csvString.Substring(firstComma + 1, secondComma);
Boolean lit = Boolean.Parse(csvString.Substring(secondComma + 1));
//print
Console.WriteLine("Pyramid Slot Number: " + slotNumber);
Console.WriteLine("Block Letter: " + blockLetter);
Console.WriteLine("Lit: " + lit);
我试着输入“5,M,true”。但是,大写字母的输出是“M,t”。如果我尝试输入 15 而不是 5,那么它会给出“M,tr”。最后,我只想得到一封信。解决了这个问题我就用char了
编辑:
char blockLetter = char.Parse(csvString.Substring(firstComma + 1, 1));
我用这个谢谢!
据我了解,根据提供的代码,您需要用逗号分隔的值。如果我猜对了,那么最好使用String.Split方法。
如果您的 CSV 文件包含您阅读的数据,您可以只用逗号拆分字符串,然后按索引提取各个字段。这是一个例子:
var csvEntry = "5,M,true";
var entryData = csvEntry.Split(',');
var slotNumber = int.Parse(entryData[0]);
var blockLetter = entryData[1];
var lit = bool.Parse(entryData[2]);
Console.WriteLine($"Pyramid Slot Number: {slotNumber}");
Console.WriteLine($"Block Letter: {blockLetter}");
Console.WriteLine($"Lit: {lit}");
String.Substring
的第一个参数是起始索引,第二个参数不是结束索引而是长度。所以你需要计算一下:
int firstComma = csvString.IndexOf(',');
int startIndex = firstComma + 1;
int secondComma = csvString.IndexOf(',', startIndex);
int length = secondComma - startIndex;
string blockLetter = csvString.Substring(startIndex, length);
一种更简单的方法是使用 String.Split
得到一个 string[]
,所有标记都用逗号分隔:
string[] allSlots = csvString.Split(',');
// first token is in allSlots[0] and second in allSlots[1]
//read
Console.Write("Please enter (pyramid slot number,block letter,whether or not the block should be lit): ");
string csvString = Console.ReadLine();
//location of comma
int firstComma = csvString.IndexOf(',');
int secondComma = csvString.IndexOf(',', firstComma + 1);
//extract slot number of pyramid
int slotNumber = int.Parse(csvString.Substring(0, firstComma));
string blockLetter = csvString.Substring(firstComma + 1, secondComma);
Boolean lit = Boolean.Parse(csvString.Substring(secondComma + 1));
//print
Console.WriteLine("Pyramid Slot Number: " + slotNumber);
Console.WriteLine("Block Letter: " + blockLetter);
Console.WriteLine("Lit: " + lit);
我试着输入“5,M,true”。但是,大写字母的输出是“M,t”。如果我尝试输入 15 而不是 5,那么它会给出“M,tr”。最后,我只想得到一封信。解决了这个问题我就用char了
编辑:
char blockLetter = char.Parse(csvString.Substring(firstComma + 1, 1));
我用这个谢谢!
据我了解,根据提供的代码,您需要用逗号分隔的值。如果我猜对了,那么最好使用String.Split方法。
如果您的 CSV 文件包含您阅读的数据,您可以只用逗号拆分字符串,然后按索引提取各个字段。这是一个例子:
var csvEntry = "5,M,true";
var entryData = csvEntry.Split(',');
var slotNumber = int.Parse(entryData[0]);
var blockLetter = entryData[1];
var lit = bool.Parse(entryData[2]);
Console.WriteLine($"Pyramid Slot Number: {slotNumber}");
Console.WriteLine($"Block Letter: {blockLetter}");
Console.WriteLine($"Lit: {lit}");
String.Substring
的第一个参数是起始索引,第二个参数不是结束索引而是长度。所以你需要计算一下:
int firstComma = csvString.IndexOf(',');
int startIndex = firstComma + 1;
int secondComma = csvString.IndexOf(',', startIndex);
int length = secondComma - startIndex;
string blockLetter = csvString.Substring(startIndex, length);
一种更简单的方法是使用 String.Split
得到一个 string[]
,所有标记都用逗号分隔:
string[] allSlots = csvString.Split(',');
// first token is in allSlots[0] and second in allSlots[1]