c#切片/分配变量
本文关键字:变量 分配 切片 | 更新日期: 2023-09-27 18:11:41
String input;
Console.WriteLine(":>");
input = (Console.ReadLine());
string[] column = input.Split(' ');
int number_of_elements = column.Count(s => s != null);//counts the number of elements inputted
if (number_of_elements > 7 && column[0].ToLower() == "add") {
**String firstName = column[1, number_of_elements-6];**
String lastName = column[number_of_elements-5];
String id_Clause = column[number_of_elements-4];
String id_Number = column[number_of_elements-3];
String as_Clause = column[number_of_elements-2];
String as_Level = column[number_of_elements-1];
}
我正在尝试制作一个c#程序,它接受这样的值
ADD Mary Jane Watson ID 123456 AS Advanced
我在试着做
String firstName = Mary Jane;
String lastName = Watson;
String id_Clause = ID
String id_Number = 123456
String as_Clause = AS
String as_Level = Advanced
姓Watson,但ADD和Watson之间的一切都是First name。
如果输入是
ADD Mary Jane Jennifer Watson ID 123456 AS Advanced
则结果为
String firstName = Mary Jane Jennifer;
String lastName = Watson;
String id_Clause = ID
String id_Number = 123456
String as_Clause = AS
String as_Level = Advanced
使用字符串。加入
例如:
firstName = String.Join(" ", column, 1, number_of_elements - 6);
您可以使用。split(' '),但由于您不知道名称的实际长度,并且您没有任何其他分隔符,因此这很困难。
你可以做的事情:
String[] splitValues = "ADD Mary Jane Watson ID 123456 AS Advanced".Split(' ');
String lastName = splitValues[splitValues.Length-5]
String id_Clause = splitValues[splitValues.Length-4]
String id_Number = splitValues[splitValues.Length-3]
String as_Clause = splitValues[splitValues.Length-2]
String as_Level = splitValues[splitValues.Length-1]
和第一个名字取其余的值,跳过第一个。
这只是一个例子,但我希望你能明白。此外,它不包括姓氏由多个部分组成的情况。
获取ID-token的索引
var s = input.Split(' ');
var indexID = Array.FindIndex(s, a => a == "ID");
要获得名字,跳过ADD-token,取比索引少2的值(以避免姓氏和ID-token)。
string firstName = String.Join(" ", s.Skip(1).Take(indexID - 2));
同样使用索引来获取姓氏和idNumber
string lastName = s[indexID - 1];
string idNumber = s[indexID + 1];
级别是数组中的最后一个条目。
string asLevel = s[s.Length - 1];
下面是一个完整的示例程序。
static void Main(string[] args)
{
string[] inputs = new string[] { "ADD Mary Jane Watson ID 123456 AS Advanced", "ADD Mary Jane Jennifer Watson ID 123456 AS Advanced" };
foreach (string input in inputs)
{
Console.WriteLine(Extract(input).ToString());
}
}
private static Person Extract(string input)
{
var s = input.Split(' ');
var indexID = Array.FindIndex(s, a => a == "ID");
string firstName = String.Join(" ", s.Skip(1).Take(indexID - 2));
string lastName = s[indexID - 1];
string idNumber = s[indexID + 1];
string asLevel = s[s.Length - 1];
return new Person()
{
FirstName = firstName,
LastName = lastName,
IDNumber = idNumber,
ASLevel = asLevel
};
}
}
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string IDNumber { get; set; }
public string ASLevel { get; set; }
public override string ToString()
{
return FirstName + " " + LastName + " " + IDNumber + " " + ASLevel;
}
}