这就是我到目前为止所写的内容:
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#,所以这就是我要问的原因。
解决方案会很棒!谢谢!
答案 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#中同时替换不同的字符。
您可以遍历所有字符并从中构建结果字符串(如果输入字符串可以很长,则使用字符串构建器)。对于每个字符,将其替换附加到结果字符串(构建器)。
但是你想做什么?我想不出在没有任何分隔符的情况下附加文件路径的有用应用程序。