2016-07-16 5 views
1

Also ich frage mich nur, ob jemand hier eine bessere Lösung für die Formatierung der Daten im String-Array vorschlagen kann, so dass es nicht "," oder ":" enthält?Bessere Möglichkeit, mein Array zu formatieren und ',' und ':' in C# zu entfernen?

public void formatArrayInformation() 
    { 
     string[] readTxtFileAsOne = System.IO.File.ReadAllLines(@"C:\Users\test.txt"); 


     string formatArrayString; 



     for (int i = 0; i < readTxtFileAsOne.Length; i++) 
     { 


      formatArrayString = readTxtFileAsOne[i]; 
      string removeCommaInString = formatArrayString.Replace(":", " "); 
      formatArrayString = removeCommaInString.Replace(",", " "); 
      readTxtFileAsOne[i] = formatArrayString; 



     } 

    } 

Antwort

1

Ich sehe kein Problem mit Ihrem Ansatz. Ich würde vereinfachen nur es wie folgt aus:

public void formatArrayInformation() 
{ 
    string[] readTxtFileAsOne = System.IO.File.ReadAllLines(@"C:\Users\test.txt"); 

    for (int i = 0; i < readTxtFileAsOne.Length; i++) 
    { 
     readTxtFileAsOne[i] = readTxtFileAsOne[i].Replace(":", " ").Replace(",", " "); 
    } 
} 

Wenn statt sie mit Leerzeichen zu ersetzen, Sie wollen sie nur entfernen, können Sie entweder, natürlich, für die Replace Methode "" als zweiten Parameter verwenden oder etwas seltsam wie folgt aus:

public void formatArrayInformation() 
{ 
    string[] readTxtFileAsOne = System.IO.File.ReadAllLines(@"C:\Users\test.txt"); 

    for (int i = 0; i < readTxtFileAsOne.Length; i++) 
    { 
     var txt = readTxtFileAsOne[i].ToList(); 
     txt.RemoveAll(x => ":,".Contains(x)); 
     readTxtFileAsOne[i] = new string(txt.ToArray()); 
    } 

} 
+0

Ich fühle mich wie Ihre Lösung ist die Art, wie ich es mehr als mit mehreren zusätzlichen Zeichenfolgen zu ersetzen wäre, danke für das Feedback. –

0

ersetzen sie durch leere Anführungszeichen (ersetzen (" "" ") oder ersetzen (":" ""))

  formatArrayString = readTxtFileAsOne[i]; 
      string removeCommaInString = formatArrayString.Replace(":", ""); 
      formatArrayString = removeCommaInString.Replace(",", ""); 
      readTxtFileAsOne[i] = formatArrayString; 
1

Sie können es wie

in einer einzigen Zeile machen
string removeCommaInString = formatArrayString.Replace(":", "").Replace(",", ""); 
+0

Das sieht in der Tat besser aus als was ich dachte, danke! –

+0

Eigentlich brauchst du nicht einmal 'removeCommaInString'. – Andrew

0

Sie Linq verwenden:

es
readTxtFileAsOne[i] = new string(readTxtFileAsOne[i] 
    .Where(c => !(new[] {',', ':'}).Contains(c)).ToArray()); 

zu brechen, einer der Konstrukteure vonMitkönnen Sie ein Zeichen-Array übergeben und eine Zeichenfolge aus dem Zeichen-Array erstellen. Das verwenden wir.

Wir brechen die Zeichenfolge in Zeichen und erstellen ein neues Array, überspringt die , 's und :' s. Dieses neue Array wird mit dem Konstruktor string zu einer Zeichenfolge erstellt.

+0

Ich habe das Gefühl, für diesen Ansatz ist vor allem für extreme Linq Liebhaber. Lesbarkeit und Leistung (wahrscheinlich nicht wahrnehmbar) gehören jedoch nicht zu seinen Stärken. – Andrew

Verwandte Themen