string.replace如何从字符串中删除索引

时间:2015-03-27 09:47:04

标签: arrays string c#-4.0

这可能是一个重复的问题,但快速搜索并没有给我任何结果。

所以这可能只是一个技术问题,我有点好奇。首先,我在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] = "";

所以...这里发生了什么以及它是如何运作的。

编辑:语法

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类型。

    在第一个例子中。您可以将空字符串值分配给字符串类型。这是允许的。