Is there an easy way to change a char in a string in C#?

后端 未结 8 1855
忘掉有多难
忘掉有多难 2020-12-10 16:02

I want to do this:

string s = \"abc\";
s[1] = \'x\';

and s will become \"axc\". However, it seems that string[i] only has a getter and has

相关标签:
8条回答
  • 2020-12-10 16:34

    Why not do this if you're using some Linq

    private string ConvertStr(string inStr , int inIndex , char inChar)
    {
    char[] tmp = inStr.ToCharArray();
    tmp.SetValue(inChar , inIndex);
    return new string(tmp);
    }
    

    That should let you replace whatever char you want with whatever char you want.

    0 讨论(0)
  • 2020-12-10 16:39

    Remember, in managed and safe .Net, strings are immutable, so even if you could do the above, you'd really be creating a new copy of the string with the replacement.

    If you are only replacing one character, a simple loop is probably your best bet.

    However, if you are going to make multiple replacements, consider using a StringBuilder:

      string s = "abc";
      var stringBuilder = new StringBuilder(s);
      stringBuilder[1] = 'x';
      s = stringBuilder.ToString();
    
    0 讨论(0)
  • 2020-12-10 16:47

    What's about this?

    string originalString = "abc";
    
            var index = 1;
            char charToReplace = 'x';
    
            var newString = string.Format("{0}{1}{2}", originalString.Substring(0, index), charToReplace, originalString.Substring(index + 1));
    
    0 讨论(0)
  • 2020-12-10 16:47

    yes in c# string can not be altered.

    but we can try this

    string s = "abc";
    s = s.Replace('b', 'x');
    Console.WriteLine(s);
    

    answer will be "axc". as this will replace the old string with new string.

    0 讨论(0)
  • 2020-12-10 16:52

    Strings are immutable which is why there's no setter, you can however use a string builder:

    StringBuilder s = new StringBuilder("abc");
    
    s[1] = 'x';
    
    0 讨论(0)
  • 2020-12-10 16:54

    (Your example is slightly wrong: s[2] = 'x' should change it to "abx".)

    No you can't, since strings are immutable, you have to create a new string:

    http://en.wikipedia.org/wiki/Immutable_object

    You should use a method that returns a new string with the desired modification.

    Hope that helps!

    0 讨论(0)
提交回复
热议问题