【问题标题】:Replace a character from a string in c#在c#中替换字符串中的一个字符
【发布时间】:2013-01-20 15:12:23
【问题描述】:

我使用Readline() 从串口读取字符串。

但问题是字符串总是在末尾附加"\r"

我试过了

text.Replace("\r","");

但它不起作用。

还有其他选择吗?

【问题讨论】:

  • 该值中是否实际包含文本“\r”,还是包含回车符?
  • 字符串是不可变的,一旦它们被构造就不能更新它们,只能创建新的副本。 Replace 是一个函数,它将返回一个新字符串,因为当前字符串无法更新。
  • 使用serialPort1.NewLine = "\r\n"; 默认为\n,所以在结果中保留\r。

标签: c# .net string character


【解决方案1】:

Replace 无法就地工作。您必须将结果分配给变量。

text = text.Replace("\r","");

或者干脆

text = text.Trim();

【讨论】:

  • 同时使用双斜杠“\\r”
  • @CodingWithSpike 绝对没有。 "\\r" 不是 Carriage return
  • d'oh,你说得对,我是个白痴。我在别人的回答中读到了它,并认为他们是对的。这就是我早上喝咖啡前太早的结果。
【解决方案2】:

您需要将结果分配给某个字符串以获取没有\r的字符串

改变

 text.Replace("\r","");

text = text.Replace("\r","");

【讨论】:

  • 我不是反对者,但这可能与复制 I4V 的答案有关。
  • 我没有,我想我是第一个告诉分配回文本的人。
  • 我没有复制,我在 linqpad 中执行了我的代码并更新了我的答案。
【解决方案3】:

\ 翻倍,

text.Replace("\\r","");

或使用@,逐字字符串

text.Replace(@"\r","");

【讨论】:

  • @Ajay 那么你确定你正在替换\r吗?
  • @Ajay 试试text.Replace(@"\r\n","");
【解决方案4】:

改用这个,因为回车取决于当地文化:

text.Replace(Environment.NewLine, "");

【讨论】:

    【解决方案5】:

    试试@verbtaim literal点赞;

    text.Replace(@"\r","");
    

    或者你可以使用双斜杠 (\\)

    text.Replace("\\r","");
    

    \r回车 字符文字。查看Character literals

    注意String.Replace() 方法,因为它有两个重载。

    【讨论】:

    • 我猜这里有一些讨厌的人,但我认为这是最好的答案(关于背景信息)+1
    【解决方案6】:

    "...字符串总是在末尾附加"\r""

    然后去掉最后一个字符:

    string a = "hello\r";
    string b = a.Substring(0, a.Length - 1);
    

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2020-04-06
      • 2011-10-20
      • 2012-08-30
      相关资源
      最近更新 更多