C# - 用空字符替换一个字符

31
我有一个看起来像这样的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();
  • 有谁能帮我弄清如何替换一个“.”?

1
字符串 temp = text.Replace(".", ""); 其中 text 是来自 RTB 的整个文本 - raym0nd
7个回答

41

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

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

这将返回替换完成后的字符串,但是item本身不会改变。你需要这样:

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

谢谢!这正是我需要的,也是最简单的方法! - theNoobGuy
1
我必须再等几分钟 :) 感谢您的提醒! - theNoobGuy

5
string item2 = item.Replace(".", "");

你需要使用Replace的结果,它不会直接操作字符串本身。


4

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


3

替代:

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

请尝试以下方法:

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

使用以上代码将不能正确地实现您的需求。
placementOneListBox.Items.Add(item.Replace(".", ""));

接近了,但我发现你实际上需要一个新的字符串项来替换它(无论你在这里展示的方式如何)。 - theNoobGuy
糟糕!好发现。你也可以这样做:placementOneListBox.Items.Add(item.Replace(".",""); - djdanlib
你不能给 foreach 循环变量赋值。 - David Heffernan

2

字符串是不可变的,因此

item.Replace(".","")

不会修改原始字符串,而是返回一个新的字符串。
需要使用以下代码:
placementOneListBox.Items.Add(item.Replace(".",""));

编辑:正如您可以从同时响应的一系列回复中看到的那样,我们的许多同行都同意!;-)

0

这样怎么样?

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


0

替换你的替换:

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

使用这个:

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

你不能给 foreach 循环变量赋值。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接