[英]String splitting in c#
所以这就是事情。 我在 c# 中有分配,它说我有字符串:
string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow".
我需要拆分此字符串以获取名称、姓氏和城市...然后我需要创建 3 个对象类型Person 。 我需要将 3 个对象放入 1 Person[] 数组中,最后我需要通过该数组 go 并打印此人的信息。 结果应如下所示:
约翰戴维森贝尔格莱德
迈克尔巴顿克拉科夫
伊万·珀金森 莫斯科
我试图创建一个可以工作的代码,但我无法完成。 我成功了,但我不知道如何完成。 我不知道我是否做对了,但如果我做对了,我不知道如何将这个拆分的字符串与我写的 class 连接起来。 请帮忙。
这是代码:
{
string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow ";
string[] strings = text.Split(new char[] {'.','/',' '});
foreach(string s in strings)
{
Console.WriteLine(s);
}
}
class Person
{
public string Name;
public string Surname;
public string City;
public Person(string name, string surname, string city)
{
Name = name;
Surname = surname;
City = city;
}
}
我不会像你那样拆分它。 规则似乎很明确:
因此,您需要三个String.Split
和一个可以填充的List<Person>
:
string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow ";
string[] persons = text.Split(' ', StringSplitOptions.RemoveEmptyEntries); // you can also `Trim` the string first
List<Person> personList = new List<Person>(persons.Length);
foreach(string p in persons)
{
string[] nameCity = p.Split('/');
string[] names = nameCity[0].Split('.');
personList.Add(new Person(names[0],names.ElementAtOrDefault(1),nameCity.ElementAtOrDefault(1)));
}
您可以通过简单的步骤来做到这一点。
var text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow ";
var names = text.Split(' '); // first split persons
var persons = new List<Person>();
foreach(var name in names) // for each person
{
var country = name.Substring(name.IndexOf('/') + 1); // cut country by /
var nameArr = name.Substring(0, name.IndexOf('/')).Split('.'); // cut and split first name and last name
persons.Add(new Person(nameArr[0], nameArr[1], country));
}
这是您的解决方案
Person[] personArray = new Person[3];
string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow ";
string[] persons = text.Split(new char[] { ' ' });
int i = 0;
foreach (string ss in persons)
{
if (!string.IsNullOrEmpty(ss))
{
string[] detailofPerson = ss.Split(new char[] { '.', '/' });
Person person = new Person(detailofPerson[0], detailofPerson[1], detailofPerson[2]);
personArray[i] = person;
i++;
Console.WriteLine(ss);
}
}
我告诉你这个。 如果您采用这种方式一次拆分,并且保证名称中没有空格、缺少城市等,请使用数学
string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow ";
string[] people = text.Split(new char[] {'.','/',' '});
for(int i = 0; i < people.Length - 3; i += 3)
{
Console.WriteLine(people[i]);
Console.WriteLine(people[i + 1]);
Console.WriteLine(people[i + 2]);
Console.WriteLine("---------");
var person = new Person(people[i], people[i + 1], people[i + 2]);
. . . . .
}
或使用命名元组进行测试。 或者直接将people[x]
插入person
for(int i = 0; i < people.Length - 3; i += 3)
{
(string Name, string LName, string City) tempPerson = (people[i], people[i + 1], people[i + 2]);
Console.WriteLine(tempPerson); // test
var person = new Person(tempPerson.Name, tempPerson.LName, tempPerson.City);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.