c# Do-Loop不向字符串中添加字符

本文关键字:添加 字符 字符串 Do-Loop | 更新日期: 2023-09-27 17:49:15

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

我设置了这个do-loop,这样它就应该一次遍历这个字符串1个字符,看看它是否是这个"[",同时将每个字符添加到另一个字符串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;

c# Do-Loop不向字符串中添加字符

您的代码工作正常(我刚刚测试了它)。ContainerName的值为"Average Man{[]"。的球员。字符可能没有正确的值。我用Player。人物= "普通人{[属性(精神10)(身体10)(灵魂10)]}"

更优雅的解决方案是

TextBox1.Text = Player.Character.Substring(0, Player.Character.IndexOf('['))

我假设字符是播放器的字符串属性,你想要的字符串到第一个[或整个字符串,如果它不存在。

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;