【问题标题】:string.Replace (or other string modification) not workingstring.Replace(或其他字符串修改)不起作用
【发布时间】:2021-10-14 01:25:55
【问题描述】:

对于以下代码,我无法让string.Replace 工作:

someTestString.Replace(someID.ToString(), sessionID);

当我调试和检查参数时,它们具有我期望的值 - 即 someID.ToString() 得到“1087163075”,sessionID 具有“108716308”,someTestString 包含“1087163075”。

我不知道为什么这不起作用更改 someTestString

完整示例:

string someTestString = 
      "<a href='myfoldert/108716305-1.jpg' target='_blank'>108716305-1.jpg</a>"
someTestString.Replace("108716305", "NewId42");  

结果(someTestString)应该是这样的:

"<a href='myfoldert/NewId42-1.jpg' target='_blank'>NewId42-1.jpg</a>" 

但它不会改变。 someTestString 的字符串在点击我的代码后保持不变。

【问题讨论】:

  • 经典 .net 编码错误。我想每个人都已经匆忙地遇到过一两次了:-)))
  • CoffeeAddict 在一个月后犯了同样的错误很常见 :) stackoverflow.com/questions/1558024/string-replace-not-working
  • 请注意,您希望更改字符串的System.String 类型上的每个操作都存在完全相同的问题 - 它们不会更改字符串 - 它们会返回带有更改的新字符串。

标签: c#


【解决方案1】:

字符串是不可变的。 string.Replace 的结果是具有替换值的新字符串。

您可以将结果存储在新变量中:

var newString = someTestString.Replace(someID.ToString(), sessionID);

如果您只想观察“字符串更新”行为,或者只是重新分配给原始变量:

someTestString = someTestString.Replace(someID.ToString(), sessionID);

请注意,这适用于所有其他 string 函数,例如 RemoveInsert、trim 和子字符串变体 - 它们都返回新字符串,因为原始字符串无法修改。

【讨论】:

  • 所以看起来你不能这样做并将其设置为自身:someTestString = someTestString.Replace(someID.ToString(), sessionID);
  • 好吧,我想我需要开始更多地研究正则表达式......对于一个没有接触太多它的新手来说是痛苦的......因为这只是同性恋和正则表达式最好的下一个选择。
  • 你确定你的论点是正确的吗?你说 someID 是 108716307,但是你的 someTestString 的值是 108716305...所以最后一个数字不同,所以不匹配。
  • 这名字不好。问题是,任何其他名称都会更长且笨拙。 (GetWithReplacement?GetAfterReplacing?ReplaceAndReturn?)
  • “所以看起来你不能只这样做并将其设置为自身” - 是的,你可以。
【解决方案2】:
someTestString = someTestString.Replace(someID.ToString(), sessionID);

这应该适合你

【讨论】:

    【解决方案3】:

    字符串是不可变的,替换会返回一个新字符串,所以你需要类似

    string newstring = someTestString.Replace(someID.ToString(), sessionID);
    

    【讨论】:

      【解决方案4】:

      你可以通过使用来达到想要的效果

      someTestString = someTestString.Replace(someID.ToString(), sessionID);
      

      正如 womp 所说,字符串是不可变的,这意味着它们的值不能在不改变整个对象的情况下改变。

      【讨论】:

        猜你喜欢
        • 2013-02-07
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        相关资源
        最近更新 更多