有1.txt内容为
“12 32 你好 你好
 122 122 你好 你好”
现在要求将数字后面的空格变为逗号,以及文字后面的空格不变,重新放在1.txt中!++++++++++++++++++++++++++++
我自己编程序主要的问题开始是不能够正确读取汉字,现在已经解决了,但是不能够不转义字符
"\n"和" "表达出来啊,能够显示汉字了,但是不能够继续分行啊!!我的代码如下::::
string input = "";
char[] c = " ".ToCharArray();//空格当做分割符号!
StringBuilder newStrs = new StringBuilder(); 
//下面是读取文件内容
StreamReader reader=new StreamReader("1.txt",System.Text.Encoding.Default);
while ((input=reader.ReadLine())!=null) //每次读入文件一行
{
string[] s = input.Split(c);
int n =1;
foreach(string str in s)
{
char[] chrs =str.ToCharArray();
newStrs.Append( chrs );
if(n==1||n==2)
{
newStrs.Append(",".ToCharArray());
}
else
newStrs.Append(c);//对于不该换为逗号的部分恢复为空格!
n++;
}
newStrs.Append("\n".ToCharArray());//每行后面要加上一个换行符号!
}
newStrs.Remove(newStrs.Length-1,1);//最后一行的就不要换行符号了,该去掉!
reader.Close();//重新写该文件!
StreamWriter sw = File.CreateText(fileName);
input = newStrs.ToString();
sw .WriteLine(input);
sw.Close();
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
大家怎么做啊??我的问题是什么啊??自己感觉应该是后面重新写文件的地方有问题!!

解决方案 »

  1.   

    处理字符串的部分修改为:         string[] s = input.Split(' ');  // 按空格拆分字符串
    int test = 0;                   // 用于存放数字
             bool isNumber = false;          // 用于记录字符串是否为数字
    foreach(string str in s)
    {
       isNumber = Int32.TryParse(str, out test);  // 尝试将 str 转换为 Int32
                                                           // 成功则返回 true
       newStrs.AppendFormat("{0}{1}",str, isNumber ? ',' : ' ');
                                                           // 添加新字符串
                                                           // 后面添加空格还是逗号由 isNumber 决定
    }
             newStrs.Append(Enviroment.NewLine);           // 添加换行符,在 Windows 系统为 \r\n 而不是 \n
    如果数字可能超过 Int32 的范围,或者可能是实数,可以使用 Double.TryParse 或 Decimal.TryParse 方法判断字符串是否为一个数;或者你可以自己写一个函数判断字符串是否为数字。