用字符串替换字母表中的每个字母?

时间:2009-03-27 10:52:03

标签: c# string

这就是我到目前为止所写的内容:

string omgwut;
omgwut = textBox1.Text;
omgwut = omgwut.Replace(" ", "snd\\space.wav");
omgwut = omgwut.Replace("a", "snd\\a.wav");

现在,问题是此代码将转为

"snd\space.wav"

进入

"snd\spsnd\a.wavce.wsnd\a.wavv"

第四行。不是我想要的!现在我知道我不擅长C#,所以这就是我要问的原因。

解决方案会很棒!谢谢!

3 个答案:

答案 0 :(得分:3)

你仍然需要编写getSoundForChar()函数,但这应该是你要求的。不过,我不确定你所要求的是什么,你可以做你想要的,即播放相关角色的声音。你可能最好把它们放在List< string>中为此。

StringBuilder builder = new StringBuilder();
foreach (char c in textBox1.Text)
{
    string sound = getSoundForChar( c );
    builder.Append( sound );
}
string omgwut = builder.ToString();

这是一个开始:

public string getSoundForChar( char c )
{
     string sound = null;
     if (sound == " ")
     {
         sound = "snd\\space.wav";
     }
     ... handle other special characters
     else
     {
         sound = string.Format( "snd\\{0}.wav", c );
     }
     return sound;
}

答案 1 :(得分:1)

问题是您正在进行多次数据传递。尝试在循环中单步执行字符串的字符,并将每个'from'字符替换为'to'字符串。这样你就不会回到字符串上并重新做那些已被替换的字符。

此外,创建单独的输出字符串或数组,而不是修改原始字符串或数组。理想情况下使用StringBuilder,并将新字符串(如果不替换此字符,则附加原始字符)添加到其中。

答案 2 :(得分:0)

我不知道如何在C#中同时替换不同的字符。

您可以遍历所有字符并从中构建结果字符串(如果输入字符串可以很长,则使用字符串构建器)。对于每个字符,将其替换附加到结果字符串(构建器)。

但是你想做什么?我想不出在没有任何分隔符的情况下附加文件路径的有用应用程序。