2012-05-07 45 views
0

我正在测试通过C#剪切字符串,但我没有正确地得到结果。 它仍然显示全文exactString。Trimstart和TrimEnd不按要求工作

String exactString = [email protected]@^^@@DEF 
char[] Delimiter = { '@', '@', '^', '^', '@', '@' }; 
string getText1 = exactString.TrimEnd(Delimiter); 
string getText2 = exactString.TrimStart(Delimiter); 
MessageBox.Show(getText1); 
MessageBox.Show(getText2); 

OUTPUT:

[email protected]@^^@@DEF两个getText1和getText2。

正确的OUTPUT应该是 ABC代表getText1,DEF代表getText2。

我该如何解决? 谢谢。

+0

你有什么用字符数组微调这里的逻辑??? –

+0

HiHi,我应该用Heinzi提到的拆分字符串方法...错过了我的头... :) – kyusan93

回答

7

你想拆分你的字符串,而不是修剪它。因此,使用正确的方法是String.Split

String exactString = "[email protected]@^^@@DEF"; 
var result = exactString.Split(new string[] {"@@^^@@"}, StringSplitOptions.None); 
Console.WriteLine(result[0]); // outputs ABC 
Console.WriteLine(result[1]); // outputs DEF 
+0

这是伟大的...谢谢... – kyusan93

+0

+1,很好的答案。 –

1

您正在寻找String.Replace,而不是修剪。

char[] Delimiter = { '@', '^' }; 
string getText1 = exactString.Replace(Delimiter,''); 

修剪只在开始时删除字符,替换通过整个字符串查找。

您可以使用(方便地命名的)String.Split方法将字符串分成两部分。

char[] Delimiter = { '@', '^' }; 
string[] text = exactString.Split(Delimiter, StringSplitOptions.RemoveEmptyEntries); 
//text[0] = "ABC", text[1] = "DEF 
+1

注意:不需要复制分隔符。 – Reniuz

+0

谢谢,这确实很愚蠢。 – TJHeuvel

+0

我使用拆分新的字符串,而不是... :) – kyusan93

1

可以使用String.Split Method

String exactString = "[email protected]@^^@@DEF"; 
string[] splits = exactString.Split(new string[]{"@@^^@@"}, StringSplitOptions.None); 
string getText1 = splits[0]; 
string getText2 = splits[1]; 
MessageBox.Show(getText1); 
MessageBox.Show(getText2);