【问题标题】:C# - Replace a character with nothingC# - 用空替换一个字符
【发布时间】:2011-10-13 18:00:03
【问题描述】:

我有一个RichTextBox,看起来像这样:

TEXT  NEXT_TEXT  10.505   -174.994 0
TEXT  NEXT_TEXT  100.005  174.994  90 
TEXT  NEXT_TEXT  -10.000  -5.555   180
TEXT  NEXT_TEXT  -500.987 5.123    270
TEXT  NEXT_TEXT  987.123  1.000    180
TEXT  NEXT_TEXT  234.567  200.999  90

我想用任何内容替换 "." 并将其放入 ListBox...

所以新文件看起来像这样:

TEXT  NEXT_TEXT  10505   -174994 0
TEXT  NEXT_TEXT  100005  174994  90 
TEXT  NEXT_TEXT  -10000  -5555   180
TEXT  NEXT_TEXT  -500987 5123    270
TEXT  NEXT_TEXT  987123  1000    180
TEXT  NEXT_TEXT  234567  200999  90

我想过将这些值乘以 1000,但我不知道如何正确地对字符串进行匹配计算。

所以下一个想法是这样做(但是这不起作用)

  // Splits the lines in the rich text boxes
  string[] listOneLines = oneRichTextBox.Text.Split('\n');

  // Set the selection mode to multiple and extended.
  placementOneListBox.SelectionMode = SelectionMode.MultiExtended;

  // Shutdown the painting of the ListBox as items are added.
  placementOneListBox.BeginUpdate();

  // Display the items in the listbox.
  foreach (var item in listOneLines)
  {
      item.Replace(".","");
      placementOneListBox.Items.Add(item);
  }

  // Allow the ListBox to repaint and display the new items.
  placementOneListBox.EndUpdate();

  • 谁能帮我弄清楚如何替换“.”?

【问题讨论】:

  • string temp = text.Replace(".", "");其中 text 是来自 RTB 的整个文本

标签: c# replace richtextbox


【解决方案1】:

字符串是不可变的,所以这行是错误的:

item.Replace(".","");

这会在替换完成后返回字符串,但item 没有改变。你需要这个:

foreach (var item in listOneLines)
    placementOneListBox.Items.Add(item.Replace(".",""));

【讨论】:

  • 谢谢!这就是我所需要的,而且是最短的方法!
  • 我不得不再等几分钟 :) 谢谢提醒!
【解决方案2】:
string item2 = item.Replace(".", "");

你需要使用Replace的结果,它不对字符串本身进行操作。

【讨论】:

    【解决方案3】:

    使用 String.Empty 代替 ""。 这样就不会创建新对象了。

    【讨论】:

      【解决方案4】:

      代替:

      item.Replace(".", "");
      

      试试这个:

      item = item.Replace(".", "");(编辑:这是我最初的想法,但它是错误的)

      placementOneListBox.Items.Add(item.Replace(".", ""));
      

      【讨论】:

      • 关闭,但我发现您实际上需要一个新的字符串项来替换它(按照您在此处显示的方式进行操作)
      • 糟糕!很好。你也可以这样做:placementOneListBox.Items.Add(item.Replace(".","");
      • 您不能分配给foreach 循环变量。
      【解决方案5】:

      字符串是不可变的,所以

      item.Replace(".","")
      

      不修改item,而是返回一个新的字符串。

      你需要使用:

      placementOneListBox.Items.Add(item.Replace(".",""));
      

      编辑:正如您从一连串的同时响应中看到的那样,我们的许多同行都同意! ;-)

      【讨论】:

        【解决方案6】:

        替换你的替换:

        item.Replace(".","");
        

        用这个:

        item = item.Replace(".","");
        

        【讨论】:

        • 您不能分配给foreach 循环变量。
        【解决方案7】:

        怎么样

        // 拆分富文本框中的行 string[] listOneLines = oneRichTextBox.Text.Replace(".","").Split('\n');

        【讨论】:

          猜你喜欢
          • 2012-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-29
          • 1970-01-01
          • 2021-12-04
          • 2020-02-08
          相关资源
          最近更新 更多