如何拆分窗口标题?

时间:2014-07-31 17:33:34

标签: c# string winforms split title

我目前正在制作一个程序,列出某个应用程序的所有窗口。这个应用被称为" 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

4 个答案:

答案 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;
                        }));