2012-02-01 106 views
0

我有一個文本文件,其中包含以下內容(內容可變爲> 10 MB)我想設置/將副本數替換爲動態數字和。我已經使用sed utiliy來做同樣的事情,但它會顯示命令提示符。有什麼方法使用C#/正則表達式?替換文本文件中特定點的數字

我該如何將改變的模式寫回到文件中?

%[email protected] JOB NAME = "Microsoft Word -Values.docx" 
@PJL OKIAUXJOBINFO DATA="ComputerName=USER-PC" 
@PJL OKIAUXJOBINFO DATA="UserName=user" 
@PJL OKIAUXJOBINFO DATA="PortName=PORTCUSTOM" 
@PJL OKIAUXJOBINFO DATA="ReceptionTime=22:04:09 2012/02/01" 
@PJL OKIAUXJOBINFO DATA="DocumentName=Microsoft Word - LDAPValues.docx" 
@PJL OKIAUXJOBINFO DATA="MultiPage=1" 
@PJL OKIAUXJOBINFO DATA="ApplicationName=Microsoft Office Word" 
@PJL OKIJOBACCOUNTJOB JOBACCOUNTID=0 USERID="user" JOBNAME="Microsoft Word - Values.docx" 
@PJL RDYMSG DISPLAY = "" 
@PJL COMMENT OS Version : Windows NT 6.1 Build 7600 
@PJL COMMENT Product Name : OKI PCL5c Printer Driver 
@PJL COMMENT Device Name : OKI 
@PJL COMMENT Version  : 1.0.5 
@PJL COMMENT Build Date : 2010/03/30 (Tue) 16:17:01 
@PJL SET OKIPAPERSIZECHECK=ENABLE 
@PJL SET OKICUPAPERSIZECHECK=ENABLE 
@PJL SET MANUALFEED=OFF 
@PJL SET OKIXDIMENSIONMILLIMETER=216 
@PJL SET OKIYDIMENSIONMILLIMETER=280 
@PJL SET MEDIASRCMANUAL=2 
@PJL SET MEDIASRCINTRAY1=4 
@PJL SET MEDIASRCINTRAY2=1 
@PJL SET MEDIASRCINTRAY3=5 
@PJL SET MEDIASRCINTRAY4=6 
@PJL SET MEDIASRCINTRAY5=20 
@PJL SET MEDIASRCINTRAY6=21 
@PJL SET MEDIASRCINTRAY7=22 
@PJL SET QTY=1 
@PJL SET COPIES=2 
@PJL SET OKIRESOLUTION=X600Y600LEVEL2 

回答

1

好像

Regex.Replace(
    input, 
    @"COPIES=\d+", 
    string.Format("COPIES={0}", number), 
    RegexOptions.Multiline); 

會做的伎倆。

http://msdn.microsoft.com/en-us/library/taz3ak2f.aspx

寫回到該文件將是這個樣子:

string input = File.ReadAllText("filename.txt"); 
string output = Regex.Replace(
    input, 
    @"COPIES=\d+", 
    string.Format("COPIES={0}", number), 
    RegexOptions.Multiline); 
File.WriteAllText("filename.txt", output); 
3

此之後 「@PJL SET COPIES=

(?<[email protected]\ SET\ COPIES=)\d+ 

使用方法如下

發現號
Regex.Replace(text, @"(?<[email protected]\ SET\ COPIES=)\d+", newCount.ToString()); 

我使用的正則表達式環視模式

(?<=prefix)find