【问题标题】:String.Replace not replacing apostropheString.Replace 不替换撇号
【发布时间】:2013-01-04 17:45:51
【问题描述】:

我正在尝试用字符串替换撇号,由于某种原因,该方法在字符串中找不到撇号。这是似乎不起作用的 URL:

"/news/2012/march/cameron’s-crackdown-on-whiplash-–-why-the-minimum-speed-requirement-is-oddly-suspicious"
.Replace("'", "'");

有人有什么想法吗?

【问题讨论】:

  • 您确定要将值分配回字符串吗? .Replace 本身不会将值保存回原始字符串
  • 检查您的问题code 中的字体。你可以看到它是一个不同的字符,有撇号、单引号、(反)记号...
  • 问题是'不等于
  • 你没有显示你在用字符串做什么。您是否希望字符串发生变化,或者您是否意识到 String.Replace 返回一个新字符串?
  • C# string replace does not work 的可能重复项

标签: c# string replace


【解决方案1】:

字符串是不可变的类型。你不能改变它们。即使你认为你改变了它们,你创建一个新的字符串对象String.Replace() 方法也顺便返回了一个新字符串。

尝试使用"’" 而不是"'" 分配新的字符串引用。

string str = "/news/2012/march/cameron’s-crackdown-on-whiplash-–-why-the-minimum-speed-requirement-is-oddly-suspicious".Replace("’", "'");

【讨论】:

    【解决方案2】:

    您正在替换 ' 而不是 。还要记住,字符串是不可变的,因此您必须将结果分配给一个新变量,以备不时之需。

    【讨论】:

      【解决方案3】:

      ' 是不同的字符。您还需要将它分配到某个地方(字符串是不可变的),Replace() 返回新字符串:

      myString = myString.Replace("’", "'");
      

      【讨论】:

      • 我是否遗漏了什么或者这些字符之一不在我的键盘上。我尝试使用 replace 将一些文本输入到 sql 数据库中,它失败的字符是 ˈ 而不是 ' 。是否有一种不同的处理方式可以捕获所有这些,而无需将这个 ˈ 字符复制并粘贴到代码中,或者这是唯一的方法吗?我以前从未遇到过这个,但 ˈ 是在 schwa 之后。
      • @user609926 我不明白(你是如何尝试替换 sql 的)。使用源代码发布问题。
      【解决方案4】:

      替换不起作用,因为' 不是同一个字符。

      也许你忘了捕获结果,你的代码太短了。

      【讨论】:

      • +1 这就是答案(假设 OP 理解 Replaces 返回新字符串)。
      【解决方案5】:

      只需将结果分配给变量

      var str = "...".Replace("'", "'");
      

      【讨论】:

        【解决方案6】:

        由于字符串是不可变的,您需要将结果分配回另一个字符串。

        string original = "/news/2012/march/cameron’s-crackdown-on-whiplash-–-why-the-minimum-speed-requirement-is-oddly-suspicious";
        string updated = original.Replace("’","'");
        

        (还要注意`和'不一样)

        【讨论】:

          猜你喜欢
          • 2015-05-30
          • 2014-07-22
          • 2015-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多