2010-07-22 64 views
2
string temp_constraint = row["Constraint_Name"].ToString(); 
string split_string = "FK_"+tableName+"_"; 
string[] words = Regex.Split(temp_constraint, split_string); 

我想分裂一個字符串使用另一個字符串。請告訴我什麼問題是C#regex.split()

temp_constraint = FK_ss_foo_ss_fee 
split_string = FK_ss_foo_ 

但它返回一個相同的字符串一維數組作爲temp_constraint

請幫

+0

你在試圖讓分裂的文字?我同意達林。 – Robaticus 2010-07-22 17:48:31

+0

感謝您指出你Darin,我幾乎回答了這個問題 – 2010-07-22 17:50:50

+0

@亨克,現在當我打開配置文件時,有許多被接受的答案。奇怪。我猜一些緩存問題,或者OP真的在它上面工作:-) – 2010-07-22 18:12:33

回答

1

你的分割操作工作正常,我:

string temp_constraint = "FK_ss_foo_ss_fee"; 
string split_string = "FK_ss_foo_"; 
string[] words = Regex.Split(temp_constraint, split_string); 
foreach (string word in words) 
{ 
    Console.WriteLine(">{0}<", word); 
} 

輸出:

 
>< 
>ss_fee< 

我認爲問題是,你的變量沒有設置什麼你認爲他們是。您需要進行調試才能在程序的其他地方找到錯誤。

我也避免使用拆分(RegexString.Split)。你並沒有真正分裂輸入 - 你從一開始就刪除一個字符串。斯普利特可能並不總是做你想做的。試想一下,如果你有一個外鍵類似如下:

FK_ss_foo_ss_fee_FK_ss_foo_ss_bee 

你想獲得ss_fee_FK_ss_foo_ss_bee但分裂會給你ss_fee_ss_bee。這是一個人爲的例子,但它確實表明你所做的不是分裂。

+0

問題發生在 split_string =「FK _」+ tableName +「_」; 我用了一個斷點來檢查tableName的值,它正在顯示我想要的。我不理解原因。當我使用靜態字符串時,分裂正確發生。但是,當我使用變量 – Yash 2010-07-22 18:06:27

+0

@Yash時,它不一樣:你的變量可能包含一些不符合你想象的符號。也許是額外的空間。問題很可能與'tableName'的內容有關。 – 2010-07-22 18:14:11

1

您應該使用String.Split代替

string[] words = 
    temp_constraint.Split(new []{split_string}, StringSplitOptions.None); 
+0

即使你建議的方法不工作。我也嘗試過。我不確定爲什麼當我使用變量構造split_string變量時它不起作用。相反,我使用string.replace(splitstring,「」);它工作正常,它符合我的目的。 – Yash 2010-07-23 13:53:29

相關問題