替换C#中给定char / byte数组中出现的所有字符串

时间:2011-08-05 08:23:26

标签: c# arrays string replace char

我来自C ++背景,并想知道在C#中是否存在任何可以让我执行以下操作的魔法:

char[] buf = new char[128*1024*1024];
// filling the arr
buf = buf.ToString().Replace(oldstring, newstring).ToArray();

是否有机会快速完成(不是手工编写所有内容)和高效(有一份缓冲区)?

3 个答案:

答案 0 :(得分:1)

不太清楚真正你的char数组在提供的代码中是什么,但...... 使用String[] ctor overload从char数组构造字符串,并在调用replace之后使用所需的参数。

答案 1 :(得分:1)

由于字符串在.NET中是不可变的,因此操作它们的最有效的内存方式是使用StringBuilderwhich internally treats them as mutable

以下是一个例子:

var buffer = new StringBuilder(128*1024*1024);

// Fill the buffer using the 'StringBuilder.Append' method.
// Examples:
// buffer.Append('E');
// buffer.Append("foo");
// buffer.Append(new char[] { 'A', 'w', 'e', 's', 'o', 'm', 'e' });
// Alternatively you can access the elements of the underlying char array directly
// through 'StringBuilder.Chars' indexer.
// Example:
// buffer.Chars[9] = 'E';

buffer = buffer.Replace(oldstring, newstring);

答案 2 :(得分:1)

如果您需要继续使用数组(并且不能使用其他内容开头,例如其他人建议使用StringBuilder),那么不。没有内置的“零复制”方式“将(子)char数组替换为给定char数组中的另一个(子)char数组”。