将不需要的Char发送到阵列的末尾

时间:2012-12-13 15:32:14

标签: c# arrays regex char

假设我们有一个字符串

String data = "<span> 0397]);}}:;)]</span>";

然后我们将它发送到char数组

Char[] charData = data.ToCharArray();

我怎样才能通过这些数据并将所有不需要的数据替换到数组的末尾,但是将所有数据从已移动的当前字符处移开,以便为不需要的数据腾出空间。

Char[] sendToEnd = { ';', ')', '}', ']' };

我尝试了一个循环但是当循环遍及已经交换的数据时会导致无限循环。

最后字符串数据应为

"<span> 0397</span>]);}}:;)]"

2 个答案:

答案 0 :(得分:4)

var str = new String(data.Where(c => !sendToEnd.Contains(c))
                         .Concat(data.Where(c => sendToEnd.Contains(c)))
                         .ToArray());

同时将sendToEnd声明为

var sendToEnd = new HashSet<char>(new char[] { ';', ')', '}', ']' });

可以提供更好的表现

答案 1 :(得分:1)

而不是最初将字符移动到最后,将它们移动到另一个数组并连接数组以形成最终字符串。