gpt4 book ai didi

c# - 如何拆分具有多个分隔符的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:46 25 4
gpt4 key购买 nike

编辑:我应该更好地表达这个问题。我不删除它,而是将其保留在这里以供其他人学习。

我已经研究了一段时间,我还没有找到另一篇回答这个问题的帖子。

我要拆分的列表如下所示:

0. Yersinia Pestis, 76561198010013870
1. CatharsisLtd., 76561198056110126
2. Nut~Taco, 76561198072105032

这是玩家姓名和 ID 号的列表。我正在尝试删除 x。从每一行的开头开始,, 就在 ID 号之前,这样我就得到了一个如下所示的列表:

Yersinia Pestis
76561198010013870
CatharsisLtd.
76561198056110126
Nut~Taco
76561198072105032

我以为我已经通过使用类似这样的方法找到了解决方案:

string [] split = strings .Split(new Char [] {',' , '\n' });

但这行不通,因为玩家可以拥有诸如“, .”之类的东西。和他们名字中的其他符号。我确定有一种方法可以做类似的事情

string splitter = i.ToString()+". ";
and then something like ", any17DigitNumber"

如有任何帮助,我将不胜感激,我完全不知道如何使它适用于所有场景。唯一不变的是 ID 的索引和长度。

最佳答案

也许是这样的:

public class Player
{
public int Index { get; set; }
public long Id { get; set; }
public string Name { get; set; }

public override string ToString()
{
return string.Format("Player(Index={0}, Id={1}, Name={2})", Index, Id, Name);
}
}

public static Player ParsePlayer(string line)
{
var dot = line.IndexOf(".");
var comma = line.LastIndexOf(",");
return
new Player
{
Index = int.Parse(line.Substring(0, dot).Trim()),
Id = long.Parse(line.Substring(comma + 1).Trim()),
Name = line.Substring(dot + 1, comma - (dot + 1)).Trim()
};
}

public static void Main()
{
var data = new[] {
"0. Yersinia Pestis, 76561198010013870",
"1. CatharsisLtd., 76561198056110126",
"2. Nut~Taco, 76561198072105032",
"3. Smith, John, 76561198072105033",
" 4.Allen, Paul,76561198072105034 "
};

var players = new List<Player>();

// parse
foreach (var line in data)
{
players.Add(ParsePlayer(line));
}

// check
foreach (var player in players)
{
Console.WriteLine(player);
}
}

可测试 here .

正如 Reddy 在评论中所建议的那样,您也可以尝试使用正则表达式和命名的捕获组:

public static Player ParsePlayer(string line)
{
var regex = new Regex(@"\s*(?<index>[0-9]+)\s*\.\s*(?<name>.+)\s*,\s*(?<id>[0-9]+)\s*");
var match = regex.Match(line);
return
new Player
{
Index = int.Parse(match.Groups["index"].Value),
Id = long.Parse(match.Groups["id"].Value),
Name = match.Groups["name"].Value
};
}

可测试 here .

'希望这有帮助。

关于c# - 如何拆分具有多个分隔符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com