2015-11-27 4 views
-2

Короче, мне нужно создать небольшой интерфейс для шкалы взвешивания. Весовой шкаф отправляет на ПК строку String, и я хочу получить их и отсортировать, и, наконец, сохранить их в текстовом файле.C# Получение System.String [] вместо собственно строки

Для сортировки я ищу несколько ключевых слов с msgIn.Contains (msgIn - это строка) в корпусе коммутатора. В зависимости от ключевого слова я делаю:

data.Append(msgIn.Split(seperator, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 

И в конце концов, я использую:

using (System.IO.StreamWriter fileImport = new System.IO.StreamWriter(pathImportFile,true)) 
{fileImport.WriteLine(dataImport);} 

(dataImport является строка строитель)

Но в текстовом файле там только приходит "System.String[] «а не настоящая строка. Я также пробовал его с помощью методов string.Join и ToString, но каждый раз получаю одинаковый результат. Как получить содержимое строки в файл?

+4

Пожалуйста, покажите короткую, но * полную * программу, демонстрирующую проблему. Просто показывать фрагменты действительно не помогает. –

+4

'String.Split' возвращает' String [] 'не одну строку' –

+0

Что такое 'data'. И как вы заполняете 'dataImport'? – HimBromBeere

ответ

2

Метод split возвращает массив строк. Попробуйте что-то вроде этого:

Array.ForEach(msgIn.Split(seperator, StringSplitOptions.RemoveEmptyEntries), s => data.Append(s).Append("\t\t")); 

Так вы добавляете каждый элемент в массиве строки

+0

Спасибо @TimSchmelter Я писал из памяти :). Обновление, чтобы включить правильное использование – Juan

+0

Это работает! Спасибо, пока. – Dennis

0
public static void Read() 
{ 
    string pathImportFile = @"C:\Users\public\WaageLAU.txt";     
    string msgIn = "msgIn"; 

    // seperators 
    string[] tum = new string[] {"tum"}; 
    string[] eit = new string[] {"eit"}; 
    string[] kel = new string[] {"kel"}; 
    string[] tto = new string[] {"tto"}; 
    string[] ara = new string[] {"ara"}; 
    string[] och = new string[] {"och"}; 
    string[] rig = new string[] {"rig"}; 

    StringBuilder dataImport = new StringBuilder(); 

    while (_continue) 
    { 
     try 
      { 
       msgIn = _serialPort.ReadLine(); 
      } 
      catch (TimeoutException) { } 

     if (msgIn.Contains("Datum")) 
      { 
       dataImport.Append(msgIn.Split(tum, StringSplitOptions.None) + "\t\t");    
      } 
     else if (msgIn.Contains("Zeit")) 
      { 
       dataImport.Append(msgIn.Split(eit, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 
      } 
     else if (msgIn.Contains("Artikel")) 
      { 
       dataImport.Append(msgIn.Split(kel, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 
      } 
     else if (msgIn.Contains("Brutto")) 
      { 
       dataImport.Append(msgIn.Split(tto, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 
      } 
     else if (msgIn.Contains("Tara")) 
      { 
       dataImport.Append(msgIn.Split(ara, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 
      } 
     else if (msgIn.Contains("Netto")) 
      { 
       dataImport.Append(msgIn.Split(tto, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 
      } 
     else if (msgIn.Contains("Hoch")) 
      { 
       dataImport.Append(msgIn.Split(och, StringSplitOptions.RemoveEmptyEntries) + "\t\t"); 
      } 
     else if (msgIn.Contains("Niedrig")) 
      {    
       dataImport.Append(msgIn.Split(rig,StringSplitOptions.RemoveEmptyEntries)); 

       try 
        { 
         using (System.IO.StreamWriter fileImport = new System.IO.StreamWriter(pathImportFile,true)) 
         { 

          fileImport.WriteLine(string.Join("",dataImport)); 
          //fileImport.WriteLine(dataImport.ToString());       // schreibt die Zeile in die Textdatei 

         }  
        }catch (TimeoutException) { } 
       dataImport.Clear(); 
      } 
     else 
     { 
      // Fehlermeldung ausgeben/protokollieren 
     } 
    } 
} 

Так что я надеюсь, что теперь лучше понять для вас.

+0

Это мой код: Array.ForEach (msgIn.Split (Datum, StringSplitOptions.RemoveEmptyEntries), s => dataImport.Append (s)); Но теперь у меня есть пробелы между строками в текстовом файле. Я думал, что с StringSplitOptions.RemoveEmptyEntries они будут удалены. – Dennis

Смежные вопросы