【问题标题】:Change the second character in a string [duplicate]更改字符串中的第二个字符[重复]
【发布时间】:2017-09-28 12:33:42
【问题描述】:
string input = "testeeeeeee";
char[] temp = input.ToCharArray();
var test = Regex.Replace(input.Replace(temp[1].ToString(), "@").Trim(), @"\s+", " ");
Console.WriteLine(test);

这是我现在的代码,我希望将字符串上的第二个字符替换为 "@" ,现在的问题是每个 e 都将被替换为 @ ,如何解决它只有第二个字符会被替换,仅此而已?

【问题讨论】:

  • 字符串是不可变的。您可以使用 StringBuilder、字符数组或仅连接两个子字符串。在这里找到一个非常相似的答案stackoverflow.com/a/5990142/6521550

标签: c#


【解决方案1】:

一种方法是为第二个字符分配一个新值:

var input = "testeeeeeee".ToCharArray();
input[1] = '@';

var result = new string(input);

您可能希望对原始字符串而不是 char[] 执行类似 input[1] = @ 的操作,但由于字符串是不可变的,因此您无法更改它并且索引器是只读的。


另一种方式(我认为不太可取):

var input = "testeeeeeee";
var result =  input[0] + "@" + string.Concat(input.Skip(2));

对于第二种方式,使用SubString 从第二个索引中获取字符串直到结尾更简洁

【讨论】:

  • 如果可能的话,它需要是可链接的,抱歉没有告诉
  • 创建一个扩展方法然后@JordiMutsaers
  • @JordiMutsaers - 这有助于您解决发布的问题吗?
【解决方案2】:

你可以使用Substring函数

string input = "testeeeeeee";
string new_input = input.Substring(0, 1) + "@" + input.Substring(2, input.Length)

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2016-06-19
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多