将数值插入文本文件 输入一个数值,然后将这个数值插入到一个文本文件中。文本文件里面是一个排好的数值序列,一行只有一个数值,如何将这个数值插入到这个序列中?比如:输入的数为2.5文本文件里的数值序列如下:12345如何将2.5插入到2和3之间?而且插入后文本文件里的数值也是一行只有一个数值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 逻辑这样.先readline,写到一个array里面拿2.5和array里的值比较,得到一个新串再写回到txt中 StreamReader objReader = new StreamReader(txtFileName, Encoding.UTF8); string[] arrText=null;//定义数组 string sLine = ""; while (sLine != null) { sLine = objReader.ReadToEnd(); if (sLine != null) arrText.Add(sLine); } objReader.Close(); .......比较省略.........写和读差不多,省略... 楼上的思路我明白,现在主要问题就是:“拿2.5和array里的值比较, 得到一个新串 ”这一部分的问题,能给个详细的步骤吗?非常感谢了! 放到数组里,用 Convert.ToDecimal 转化,用原始的冒泡法排序后,写回 txt 文件。 txt文件可以用\r\n 换行。 从第一个开始比较,发现array[i]<2.5&&2.5<=array[i+1]时,先把array[i+1]后面的统统后移一位(array[i+n]=array[i+n+1]),在把array[i+1]=2.5;ok... double num(你需要插入的数据)string[] arr==(读到的数据....)string newstr="";foreach(string str in arr){ try { if(double.parse(str)>double.parse(num)) { str+=",\n"+num.ToString(); } str+=",\n"+str.ToString; } catch {}}就在这里写的,没区分大小写.其它的自己写... StreamReader smRead = new StreamReader(path, System.Text.Encoding.Default); string line;List<int> lst =new List<int>;lst.Add(i);while ((line = smRead.ReadLine()) != null) { lst.Add(int.Parse(line))}lst.Sort()排序,再遍历输出到txt 感谢各位,解决了。采用jsoner的方法。在if语句里加了个变量,来控制只添加一次。要不然在每一个大的数之前都会添加一次数值。非常感谢。wuyq11君的方法没试过,明天试一下,谢谢了。OK结贴! 不过不能用Int的列表,因为有可能是小数,用Single或者Double吧。 //新建文件【D:\\p.txt】;创建新form窗体,添加文本框(textBox1.Text) 和一个按钮,点击按钮时,如下操作 string[] lists; StringBuilder sb = new StringBuilder(); sb.Append(""); string paths_txt = "D:\\p.txt"; FileStream fs = new FileStream(paths_txt, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("utf-8")); sr.BaseStream.Seek(0, SeekOrigin.Begin); while (!sr.EndOfStream) { sb.Append(sr.ReadLine()+"|"); } sr.Close(); fs.Close(); sb.Append(textBox1.Text); //往字符串中添加新的数值 lists=sb.ToString().Split('|'); //分组 //冒泡法排序 decimal temp = 0; int j = 0; while (j < lists.Length) { for (int i = 0; i < lists.Length - 1; i++) { if (Convert.ToDecimal(lists[i]) > Convert.ToDecimal(lists[i + 1])) { temp = Convert.ToDecimal(lists[i]); lists[i] = lists[i + 1]; lists[i + 1] = temp.ToString(); } } j++; } //排序完毕,写入 txt StringBuilder sb_w = new StringBuilder(); for (int ii = 0; ii < lists.Length; ii++) { sb_w.Append(lists[ii].ToString()+"\r\n"); } FileInfo fi = new FileInfo(paths_txt); if (fi.Exists) { using (StreamWriter sw = fi.CreateText()) { sw.Write(sb_w.ToString()); sw.Close(); } } 使用vs2010安装部署的问题 用什么方式实现这张表呢(数据库?xml或txt或ini?) 卡巴斯基7.0影响C#程序访问数据库! 如何远程连接MYSQL数据库???? EXCEL事件如何触发??????/(在线等) 请问各位大哥哪里有FOR C#的数学解析器下载啊?最好是附源代码的那种。。。 不是语言问题《Windows 服务开发手册》中有段话不可理解 安装程序中条件判断能一起用? c#下面有什么好的Socket 框架? WEB PAGE中如何弹出错误提示?急! C/S项目架构问题 急! 如何将一个SQL语句查询结果打印成一张表格。打印代码如何写。
先readline,写到一个array里面
拿2.5和array里的值比较,
得到一个新串
再写回到txt中
string[] arrText=null;//定义数组
string sLine = "";
while (sLine != null)
{
sLine = objReader.ReadToEnd();
if (sLine != null)
arrText.Add(sLine);
}
objReader.Close();
.......比较省略.........
写和读差不多,省略...
“拿2.5和array里的值比较,
得到一个新串 ”
这一部分的问题,能给个详细的步骤吗?
非常感谢了!
array[i]<2.5&&2.5<=array[i+1]
时,先把array[i+1]后面的统统后移一位(array[i+n]=array[i+n+1]),在把array[i+1]=2.5;ok...
string[] arr==(读到的数据....)
string newstr="";
foreach(string str in arr)
{
try
{
if(double.parse(str)>double.parse(num))
{
str+=",\n"+num.ToString();
}
str+=",\n"+str.ToString;
}
catch
{}
}就在这里写的,没区分大小写.其它的自己写...
string line;
List<int> lst =new List<int>;
lst.Add(i);
while ((line = smRead.ReadLine()) != null)
{
lst.Add(int.Parse(line))
}
lst.Sort()排序,再遍历输出到txt
采用jsoner的方法。
在if语句里加了个变量,来控制只添加一次。
要不然在每一个大的数之前都会添加一次数值。
非常感谢。wuyq11君的方法没试过,明天试一下,谢谢了。
OK结贴!
//新建文件【D:\\p.txt】;创建新form窗体,添加文本框(textBox1.Text) 和一个按钮,点击按钮时,如下操作
string[] lists;
StringBuilder sb = new StringBuilder();
sb.Append("");
string paths_txt = "D:\\p.txt";
FileStream fs = new FileStream(paths_txt, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("utf-8"));
sr.BaseStream.Seek(0, SeekOrigin.Begin);
while (!sr.EndOfStream)
{
sb.Append(sr.ReadLine()+"|");
}
sr.Close();
fs.Close();
sb.Append(textBox1.Text); //往字符串中添加新的数值 lists=sb.ToString().Split('|'); //分组 //冒泡法排序
decimal temp = 0;
int j = 0;
while (j < lists.Length)
{
for (int i = 0; i < lists.Length - 1; i++)
{
if (Convert.ToDecimal(lists[i]) > Convert.ToDecimal(lists[i + 1]))
{
temp = Convert.ToDecimal(lists[i]);
lists[i] = lists[i + 1];
lists[i + 1] = temp.ToString();
}
}
j++;
} //排序完毕,写入 txt
StringBuilder sb_w = new StringBuilder();
for (int ii = 0; ii < lists.Length; ii++)
{
sb_w.Append(lists[ii].ToString()+"\r\n");
} FileInfo fi = new FileInfo(paths_txt);
if (fi.Exists)
{
using (StreamWriter sw = fi.CreateText())
{
sw.Write(sb_w.ToString());
sw.Close();
}
}