web-dev-qa-db-fra.com

C # - Remplacer un caractère par rien

J'ai un RichTextBox qui ressemble à ceci:

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

et je veux remplacer le "." avec rien et placez-le dans une ListBox...

Donc, le nouveau fichier ressemblerait à ceci:

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

J'ai pensé multiplier les valeurs par 1000 mais je ne sais pas comment faire correspondre les calculs sur une chaîne.

Donc, l’idée suivante était de faire ceci (CEPENDANT NE FONCTIONNE PAS) :

  // 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();

  • Quelqu'un peut-il m'aider à comprendre comment remplacer un "."?
20
theNoobGuy

Les chaînes sont immuables alors cette ligne est fausse:

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

Cela retourne la chaîne une fois le remplacement effectué, mais item reste inchangé. Tu en as besoin:

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

Au lieu de "", utilisez String.Empty. De cette manière, aucun nouvel objet n'est créé.

4
VRC

Au lieu de:

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

Essaye ça:

item = item.Replace (".", ""); (edit: c'était mon idée originale, mais c'est faux)

placementOneListBox.Items.Add(item.Replace(".", ""));
3
djdanlib
string item2 = item.Replace(".", "");

Vous devez utiliser le résultat de Replace, il ne fonctionne pas sur la chaîne elle-même.

3
Mike Caron

Les cordes sont immuables, donc

item.Replace(".","")

ne modifie pas l'élément, mais retourne une nouvelle chaîne.

Vous devez utiliser:

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

Edit: et comme vous pouvez le constater à partir de la rafale de réponses simultanées, beaucoup de nos pairs sont d’accord. ;-)

2
Steve Morgan

Remplacez votre remplacement:

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

avec ça:

item = item.Replace(".","");
0
Frank Pearson

Que diriez-vous

// Fractionne les lignes dans les zones de texte enrichi String [] listOneLines = oneRichTextBox.Text.Replace (".", ""). Split ('\ n');

0
Ali Humayun