2016-05-11 11 views
3
oldvalue = "RGB = (255,000,255,000)" 
newvalue = "RGB = (255,255,000,000)" 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt", 
        Regex.Replace(File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt"), 
            oldvalue, 
            newvalue)); 

これは新しい値に置き換えられません。丸括弧(カッコ)を含むテキストをregexに置き換えるにはどうすればよいですか?

しかし、置き換えたい文字列が行の文字列であるので、それは

oldvalue = "RGB 1" 
newvalue = "RGB 0" 
+0

あなたが '' Abc.txt'で 'RGB =(255000255000)の_exact_一致がありますか? –

+3

正規表現の角括弧には特別な意味があるので、混乱させるでしょう – BugFinder

+0

@AntonはいABC.txtにRGB =(255,000,255,000)の完全一致があります –

答えて

4

と協力し、Regex.ReplaceしかしString.Replaceを使用しないでください:

string oldvalue = "RGB = (255,000,255,000)"; 
string newvalue = "RGB = (255,255,000,000)"; 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt", 
      File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt").Replace( 
          oldvalue, 
          newvalue)); 
+0

行文字列はどういう意味ですか? –

+0

@DevDroneBhowmikまあ、あなたが見つけた文字列は正規表現が見つからないことを意味します –

+0

それから正規表現を使うべきですか? –

0

oldvalueは特別な意味を持つ文字が含まれていますので、正規表現で()のように\文字でエスケープする必要があります。

oldvalue = "RGB = \\(255,000,255,000\\)" 
//or oldvalue = @"RGB = \(255,000,255,000\)" 
newvalue = "RGB = (255,255,000,000)" 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt", 
        Regex.Replace(File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt"), 
            oldvalue, 
            newvalue)); 
0

してくださいは、次のようになめらかにしてみてください。

regexp = "(.*)\((.*)\)(.*)" 
newvalue = "RGB = (255,255,000,000)" 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt",  
    Regex.Replace(File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt"), 
            regexp, 
            newvalue)); 
+0

これは 'wasd()'の代わりになりますが、これは必要ではありません... –

関連する問題