如何在c#中的字符串中的索引处设置字符?
someString[someRandomIdx] = 'g';
这会给我一个错误,
我如何实现上述目标?
编辑:
是的它是’string’类型
如果它是string
类型,那么你就不能这样做,因为字符串是不可变的 – 一旦设置它们就不能改变它们。
要实现您的需求,您可以使用StringBuilder
StringBuilder someString = new StringBuilder("someString"); someString[4] = 'g';
更新
为什么使用string
而不是StringBuilder
? 出于很多原因。 以下是我能想到的一些内容:
C#字符串是不可变的。 您应该使用修改后的内容创建一个新字符串。
char[] charArr = someString.ToCharArray(); charArr[someRandomIdx] = 'g'; // freely modify the array someString = new string(charArr); // create a new string with array contents.
如果您绝对必须更改字符串的现有实例,则有一种使用不安全代码的方法:
public static unsafe void ChangeCharInString(ref string str, char c, int index) { GCHandle handle; try { handle = GCHandle.Alloc(str, GCHandleType.Pinned); char* ptr = (char*)handle.AddrOfPinnedObject(); ptr[index] = c; } finally { try { handle.Free(); } catch(InvalidOperationException) { } } }
查看本文 ,了解如何在C#中修改字符串内容。 字符串是不可变的,因此必须先将它们转换为中间对象才能进行修改。
你也可以使用Insert()方法,例如somestring.Insert(index,data)
由于没有人提到单线解决方案:
上述就是C#学习教程:如何在c#中的字符串中的索引处设置字符?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
someString = someString.Remove(index, 1).Insert(index, "g");
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1000285.html