这可能是一个重复的问题,但快速搜索并没有给我任何结果。
所以这可能只是一个技术问题,我有点好奇。首先,我在C#工作,但我想这也适用于很多其他语言。
因此,当我学会它时,字符串是一个字符数组,但它有自己的名字,以使它更容易。
当你有一个字符串并想要删除字符串的一部分时,你就可以这样做。
string test = "0123456789";
test = test.Replace("789","");
这不仅仅是将字符串中那些点的索引值替换为空,而是将索引从字符串(字符数组)中一起删除。 当我尝试设置字符串数组的索引时,如。
string[] testa = {"1", "2","3","4"};
testa[3] = "";
数组的长度保持不变,索引仍在那里。
当您在实际字符数组上尝试相同的操作时,会出现sintax错误。 例如
char[] testa = {'1', '2','3','4'};
testa[3] = '';
或
testa[3] = "";
所以...这里发生了什么以及它是如何运作的。
编辑:语法
答案 0 :(得分:1)
在C#中,没有像''
形式的“空字符”,但您可以使用空格字符(' '
)或null-character('\0'
)。字符串可以被视为一个字符数组,但它实现为包装类,使索引运算符[]
重载。这不适用于其他方式。
答案 1 :(得分:0)
好的,让我们一步一步解释这里发生了什么:
//declare a string variable
string test = "0123456789";
//return a new string instance with "789" replaced by an empty string, ""
//assign the replaced string to variable test
test = test.Replace("789","");
char
是单字符类型,并且是"已创建"两个字符文字之间('
)string
是多字符类型(=文本),并且是"已创建"两个字符串文字之间("
)
//You declared a string[] but tried to implicitly assign a char[]
/* string[] testa = { '1', '2', '3', '4' }; */
//This is the expected way (you can remove `new string[]`, but that's syntactic sugar)
string[] testa = new string[] { "1", "2", "3", "4", "foo", "bar" };
testa[3] = ""; //set third element to an empty string
答案 2 :(得分:-1)
这是因为您无法将空字符值分配给char类型。
在第一个例子中。您可以将空字符串值分配给字符串类型。这是允许的。