6

好的,我有这个Player.Character字符串"Average Man{[Attributes (Mind 10) (Body 10) (Soul 10)]}"

而且我设置了这个 do-loop,以便它应该一次通过这个字符串 1 个字符,并"["在将它检查的每个字符添加到另一个字符串时查看它是否为 this ContainerName。事情是 ContainerName 里面只有这个,"["我希望它应该有"Average Man{".

如果有人可以帮助我理解为什么会发生这种情况,并且可能是我成熟的头脑可以处理的解决方案,我将是最亲切的。

哦,这是我的代码。

int count = -1;

string ContainerName = "";

//Finds Start of container
do
{
    count = count + 1;
    ContainerName = ContainerName + Player.Character[count].ToString();
} while (Player.Character[count].ToString() != "[" && 
         Player.Character.Length - 1 > count);

textBox1.Text = ContainerName;
4

2 回答 2

1

我假设 Character 是 Player 的字符串属性,[如果字符串不存在,您希望字符串最多为第一个或整个字符串。

StringBuilder sb = new StringBuilder();
foreach (char c in Player.Character)
{
    if (c == '[')
        break;
    sb.Append(c);
}
textBox1.Text = sb.ToString();

或者

var i = Player.Character.IndexOf('[');
textBox1.Text = i >= 0 ? Player.Character.Substring(0, i) : Player.Character;
于 2012-12-20T15:39:44.877 回答
1

您的代码工作正常(我刚刚测试过)。ContainerName 的值为“Average Man{[”。Player.Charecter 可能没有正确的值。我用 Player.Charecter = "Average Man{[Attributes (Mind 10) (Body 10) (Soul 10)]}"

一个更优雅的解决方案是

TextBox1.Text = Player.Character.Substring(0, Player.Character.IndexOf('['))
于 2012-12-20T15:46:04.757 回答