2014-04-25 45 views
0

我在一行中有以下字符串,其中一部分將被替換。我正在使用Regx.Replace()如何替換c中某一行中的特定文本#

的地址4中的varchar發現(4)是4

在上述線,我必須搜索單詞「VARCHAR」,並用「MAX」替換字符串「4」。

最後,輸出應該是這樣的:

的地址4中發現的varchar(MAX)是4

請幫我在我面對上述問題。我無法取代它。

+0

要替換隻有 「4」 或任何與'varchar'一起提供。 – Bharadwaj

回答

1

可能這是你在找什麼?

Regex.Replace(s,@"varchar\([0-9]*\)", "varchar(MAX)"); 
+0

非常感謝您 – Axs

+0

不客氣:) –

0
String newString = yourString.Replace("varchar(4)","varchar(MAX)"); 
+1

OP想要搜索「varchar」這個單詞並替換它的值,並在代碼中直接替換「(4)」字符串。 –

+0

可以改寫爲'Replace(「varchar(4)」,「varchar(MAX)」)' –

+0

@IshanJain謝謝指出,編輯 – Jaguar

0

相反,您可以使用string類的擴展方法。

var yourString = "The address4 is found in varchar(4) is a 4."; 

yourString = yourString.Replace("varchar(4)", "varchar(MAX)"); 
1

使用RegEx.Replace(),你可以試試這個:

string text = "The address4 is found in varchar(4) is a 4."; 
string output = Regex.Replace(text, @"varchar\([0-9]+\)", "varchar(MAX)"); 

這將取代內部varchar(x)任意數量的...

Working Example

+2

這是正確的答案,所有其他人都錯誤地認爲該值總是4,但OP指定他想使用正則表達式。 –

0

字符串newString = Regex.Replace(yourString, 「([0-9] *)」,「MAX」);

+0

這將用'MAX'替換字符串中的每個數字。不是OP想要的。 – paqogomez

+0

所以他只需要玩一下正則表達式就可以做他想做的事情了;-) varchar \\([0-9] * \\)可能更合適 –

1

你也可以用普通/有效串方法取代它:

string sql = "The address4 is found in varchar (4) is a 4."; 
int indexOfVarchar = sql.IndexOf("varchar", StringComparison.OrdinalIgnoreCase); 
if (indexOfVarchar >= 0) 
{ 
    indexOfVarchar += "varchar".Length; 
    int indexOfBrace = sql.IndexOf("(", indexOfVarchar); 
    if(++indexOfBrace > 0) 
    { 
     int indexOfEndBrace = sql.IndexOf(")", indexOfBrace); 
     if (indexOfEndBrace >= 0) 
     { 
      sql = string.Format("{0}MAX{1}", 
       sql.Substring(0, indexOfBrace), 
       sql.Substring(indexOfEndBrace)); 
     } 
    } 
} 
1

試試這個(參考文獻:@ReinderWit)

Regex reg = new Regex("varchar\\([0-9]+\\)"); 
string strtext = "The address4 is found in varchar(4) is a 4."; 
string result= Regex.Replace(text, reg, "varchar(MAX)"); 
+0

這與我已經提出的基本相同... –

+0

@ReinderWit,是的,你是對的!我正在編寫自己的邏輯,並沒有看你的代碼:)。我讓你的參考。在答案中 – nrsharma