C# 获取 System.String[] 而不是实际的字符串

C# Getting System.String[] instead of the actually string

简而言之,我必须为体重秤创建一个小界面。 称重秤向电脑发送一些字符串,我想获取它们并对其进行排序,最后将它们保存在文本文件中。

为了对其进行排序,我在 switch case 中使用 msgIn.ContainsmsgIn 是一个字符串)来处理一些关键字。取决于我做的关键词:

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.JoinToString 方法尝试过,但每次都得到相同的结果。如何将字符串内容写入文件?

拆分方法return 一个字符串数组。尝试这样的事情:

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

因此您将每个项目附加到字符串数组

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
        }
    }
}

所以我希望现在能更好地理解你。