如何按字符拆分中文字符串?

时间:2012-07-05 22:34:45

标签: c# string

我有一个主要包含中文字符的字符串,如下所示:

string sentence = "我想找到从夏洛特飞往拉斯维加斯,让站在圣路易斯";

如何按字符分割句子?最终,我希望能够获取我的字符串,并将其写入一个文件,每个字符都在它自己的行上,如下所示:

我
想
找
到
从
夏
洛
特
飞
往
拉
斯
维
加
斯
,
让
站
在
圣
路
易
斯

我试过这样做:

StringBuilder s = new StringBuilder();
foreach (char character in sentence.ToCharArray())
{
    s.Append(character + '\n');
}
string output = s.ToString();

StreamWriter writer = new StreamWriter("test.txt", false, Encoding.UTF8);
writer.Write(output);
writer.Close();

...但无论出于何种原因,它写的不是写汉字,而是写

   29252242105020184228092794129315391442445825299260413251021162260416530235763314592232222317363452614126041

...改为文件。 但是,做

StreamWriter writer = new StreamWriter("text.txt", false, Encoding.UTF8);
writer.Write(sentence);
writer.Close();

...确实成功地将中文句子写入文件中,所以我知道这对我写文件的方式应该不会有问题。

2 个答案:

答案 0 :(得分:6)

我认为问题可能就是这样     (字符+'\ n'); 被解释为整数。也许尝试在该行中添加一个强制转换或者像这样添加两个单独的附加:

s.Append(character);
s.Append('\n');

答案 1 :(得分:1)

        var sentence = "我想找到从夏洛特飞往拉斯维加斯,让站在圣路易斯";
        var chars = sentence.ToCharArray();

        using (var writer = new StreamWriter("test.txt", false, Encoding.UTF8))
        {
            foreach (var c in chars)
            {
                writer.WriteLine(c);
            }

            writer.Close();
        }

适合我的工作