我目前正在制作一个程序,列出某个应用程序的所有窗口。这个应用被称为" Tibia"这是一场比赛。当您登录角色时,窗口标题将更改为" Tibia - playername"。
所以,让我说我打开了3个窗口并登录到它们。然后我打开了以下窗口:
Tibia - Player 1
Tibia - Player 2
Tibia - Player 3
如何分割它们并获取播放器名称? 这是我用来获取它们并将它们添加到我的组合框中的代码。
charList.Items.Clear();
foreach (Process p in Process.GetProcessesByName("Tibia"))
{
if (!charList.Items.Contains(p.MainWindowTitle))
{
charList.Items.Add(p.MainWindowTitle);
}
}
charList.SelectedIndex = 0;
我试图拆分" MainWindowTitle"通过这个:
charList.Items.Add(p.MainWindowTitle).Split('-');
然后它显示为
对于组合框中的所有项目System.String[]
我希望组合框能够充满这个:
Player 1
Player 2
Player 3
而不是
Tibia - Player 1
Tibia - Player 2
Tibia - Player 3
答案 0 :(得分:1)
charList.Items.Add(p.MainWindowTitle.Replace("Tibia - ", "") )
答案 1 :(得分:0)
split返回一个数组,其中包含字符串被拆分成的不同组。使用
访问播放器名称charList.Items[1]
您可能还想修剪字符串以删除多余的空格
charList.Items[1].Trim()
答案 2 :(得分:0)
在-
之后阅读:
charList.Items.Add(
p.MainWindowTitle.Substring(p.MainWindowTitle.IndexOf("-") + 2));
答案 3 :(得分:0)
使用子字符串比分割更简单吗?
charList.Items.AddRange(Process.GetProcessesByName("Tibia").ToList()
.Distinct().ToList() // Distinct eliminates charlist lookup
.ConvertAll<string>(c =>
{
int dashloc = c.MainWindowTitle.IndexOf("-")
return (dashloc > -1)
? c.MainWindowTitle.Substring(dashloc+1).Trim()
: c.MainWindowTitle;
}));