討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 網路投保旅行平安險 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
如何將text file裡的文字置換
更改我的閱讀文章字型大小
作者 : cock0810(小郭)
[ 貼文 50 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2015/12/29 下午 05:34:03
請問各位如何將下面的文字內容310117.542,2773584.809,25.0689530,121.5958781與0,0,0,0互相替換位置,而77換成88?
'305',310117.542,2773584.809,25.0689530,121.5958781,0,0,0,0,'77'
'305',311217.130,2773044.146,25.0640280,121.6067526,0,0,0,0,'77'
'305',310971.470,2776257.936,25.0930508,121.6044603,0,0,0,0,'77'
'305',315282.640,2774345.416,25.0756051,121.6471076,0,0,0,0,'77'


下面是我寫的程式,但卡關無法達成目的:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;

namespace ConS
{
    class Program
    {
     static void Main(string[] args)
     {
     string line;
     string linend;

     System.IO.StreamReader file = new System.IO.StreamReader("d:\\6to9_file\\305.TXT", System.Text.Encoding.Default);
     System.IO.StreamWriter filew = new System.IO.StreamWriter(@"d:\\6to9_file\\305_Success.TXT");
     //System.IO.StreamWriter filew = new System.IO.StreamWriter("d:\\6to9_file\\305.TXT");
     List<string> list = new List<string>();

     if (file != null)
     {
     while ((line = file.ReadLine()) != null)
     {
     String[] attends = line.Split(',');
     if (attends[10].ToString() == "'77'")
     {
     attends[2] = attends[6];
     //linend = line.Replace(attends[3], attends[7]);
     //linend = line.Replace(attends[4], attends[8]);
     //linend = line.Replace(attends[5], attends[9]);
     attends[10] = "'87'";
     //list.Add(attends);

     filew.WriteLine(linend);
     }

     else
     {
     filew.WriteLine(line);
     continue;
     }
     }
     file.Close();
     filew.Close();
     }
     }
    }
}
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人cock0810註記此篇回應為很有道理 2015/12/30 上午 12:35:25

>請問各位如何將下面的文字內容310117.542,2773584.809,25.0689530,121.5958781與0,0,0,0互相替換位置,而77換成88?
>'305',310117.542,2773584.809,25.0689530,121.5958781,0,0,0,0,'77'
>'305',311217.130,2773044.146,25.0640280,121.6067526,0,0,0,0,'77'
>'305',310971.470,2776257.936,25.0930508,121.6044603,0,0,0,0,'77'
>'305',315282.640,2774345.416,25.0756051,121.6471076,0,0,0,0,'77'
>
>
>下面是我寫的程式,但卡關無法達成目的:
>
> System.IO.StreamWriter filew = new System.IO.StreamWriter(@"d:\\6to9_file\\305_Success.TXT");

你知道如果用 @"...", 字串內容不需要要兩個 \\:
  ... = new System.IO.StreamWriter(@"d:\6to9_file\305_Success.TXT");


> //System.IO.StreamWriter filew = new System.IO.StreamWriter("d:\\6to9_file\\305.TXT");
> List<string> list = new List<string>();
>
> if (file != null)
> {
> while ((line = file.ReadLine()) != null)
> {
> String[] attends = line.Split(',');
> if (attends[10].ToString() == "'77'")

C# 的陣列引數從 0 開始, 第一個是 [0]. 你確定 '77' 是第 11 個!?

我建議你用 debugger 在 if 這行加個 breakpoint, 然後看看 attends 的內容.

> {
> attends[2] = attends[6];

這不叫「互換」, 這叫設值.

「互換」是:
  String tmp = attends[2];
  attends[6] = tmp;
  attends[2] = [6];

> //linend = line.Replace(attends[3], attends[7]);
> //linend = line.Replace(attends[4], attends[8]);
> //linend = line.Replace(attends[5], attends[9]);

引數也錯誤.

> attends[10] = "'87'";

你上面不是說要換成 '88' 嗎?


作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人cock0810註記此篇回應為很有道理 2015/12/31 上午 11:38:36
https://msdn.microsoft.com/zh-tw/library/fk49wtc1(v=vs.110).aspx
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/1/1 下午 11:12:12
http://stackoverflow.com/questions/7183640/fastest-way-to-find-strings-in-a-file
http://stackoverflow.com/questions/1915632/open-a-file-and-replace-strings-in-c-sharp
find the string within a file and replace it with another string
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/1/1 下午 11:14:05
http://codereview.stackexchange.com/questions/18501/replace-strings-in-a-file
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/1/1 下午 11:14:37
http://www.dotnetperls.com/replace
作者 : cock0810(小郭)
[ 貼文 50 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/1/4 上午 07:48:07
改好了 ~~ 謝謝
作者 : jery5540(Jerry Hsieh)
[ 貼文 4 | 人氣 7 | 評價 20 | 評價/貼文 5 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/5/6 下午 05:11:16
string line = "\'305\',310117.542,2773584.809,25.0689530,121.5958781,0,0,0,0,\'77\'";
     string[] items = line.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries).ToArray();
     string output = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}",
     items[0], items[5], items[6], items[7], items[8], items[1], items[2], items[3], items[4], "88");
不知道你要怎樣使用內容,這樣可能比較好用。
 板主 : 小朱
 > C# - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C# - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C#
1 小朱 6270 
2 蹂躪 2700 
3 HKLN.net 2440 
4 marlon 2130 
5 joe 1320 
6 識丁 910 
7 好說 860 
8 愛睏魚 770 
9 總幹事 720 
10 Demonbane 600 
C#
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625