【问题标题】:replace char with star on certain position inside string [duplicate]在字符串内的某个位置用星号替换字符[重复]
【发布时间】:2015-05-28 01:01:10
【问题描述】:

如果我有一些像这样的数字的字符串

var nr = "00011122233345721";

如何将字符串中的第八个和最后一个元素替换为*,使字符串变为0001112*23334572*

【问题讨论】:

  • 只使用[] 运算符。 string 是 char 的数组
  • @Tigran:那行不通。 string 的索引器是只读的
  • 快速简单的方法是first check the length of the string if it's >= 8 then use the substring function along with the string.Replace function
  • 你也可以使用正则表达式:string s = Regex.Replace(nr,@"(.{7}).(.*?).$","$1*$2*")

标签: c# .net


【解决方案1】:

由于字符串在c#中是不可变的,尝试如下:

char[] array = nr.ToCharArray();
array[7] = "*";
array[array.Length-1] = "*"
nr = new string(array);

【讨论】:

  • 这是一个可靠的方法,当然在生产代码中你想检查字符串是否足够长(并且使用.Length而不是.length
【解决方案2】:

使用

      var nr1 = "00011122233345721";
        var array = nr1.ToCharArray();
        array[7] = '*';
        array[nr1.Length-1] = '*';
        nr1 = new string(array);

        var nr = "00011122233345721";
        nr = nr.Insert(nr.Length - 1, "*");
        nr = nr.Remove(nr.Length-1);
        nr = nr.Insert(7, "*");
        nr = nr.Remove(8,1);

【讨论】:

    【解决方案3】:

    我认为这是重复的:stuff function implementation in c#

    简而言之,您不能在 .NET 中更改字符串的内容,因为它是一个不可变对象。您需要创建一个新字符串。

    【讨论】:

    • 这是评论,不是答案
    猜你喜欢
    • 2016-08-04
    • 2018-09-10
    • 2018-07-14
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2018-09-02
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多