C# 获取 System.String[] 而不是实际的字符串
C# Getting System.String[] instead of the actually string
简而言之,我必须为体重秤创建一个小界面。
称重秤向电脑发送一些字符串,我想获取它们并对其进行排序,最后将它们保存在文本文件中。
为了对其进行排序,我在 switch case 中使用 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
方法尝试过,但每次都得到相同的结果。如何将字符串内容写入文件?
拆分方法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
}
}
}
所以我希望现在能更好地理解你。
简而言之,我必须为体重秤创建一个小界面。 称重秤向电脑发送一些字符串,我想获取它们并对其进行排序,最后将它们保存在文本文件中。
为了对其进行排序,我在 switch case 中使用 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
方法尝试过,但每次都得到相同的结果。如何将字符串内容写入文件?
拆分方法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
}
}
}
所以我希望现在能更好地理解你。