我正在使用C#将TCP / IP套接字数据读取为字符串(例如,在PLC编程代码中输入的LREAL值,如' 2.2214E-18'),然后将其插入到MongoDB中。但是,我不想在插入字符串时指定数据库的名称,而是希望将其与字符串一起提供。然后,我想分割字符串并在程序的各个部分使用这些部分。
我有什么方法可以做到这一点?
我的目标是提供' 2.2214E-18 database_name collection_name'作为PLC侧的字符串,并将其拆分为C#代码。
为了读取字节流,使用了这个特定的代码块:
TcpClient client = new TcpClient(hostName, portNum);
StreamReader sr = new StreamReader(client.GetStream());
line = sr.ReadToEnd();
期待您的回复。
答案 0 :(得分:0)
这样做:
string[] plcInfo = line.Split();
或
string[] plcInfo = line.Split(null);
或:
string[] plcInfo = line.Split(new char[0]);
你将在一个数组中获得2个字符串,第一个元素必须是 2.2214E-18 ,第二个元素必须是 database_name集合名称
答案 1 :(得分:0)
您的实际问题似乎是:
在我控制其格式的字符串中,如何存储以后可以拆分的多个值?
答案非常简单:你需要一个分隔符。选择分隔符是困难的部分,它必须是一个永远不会出现在你想要存储的值中的分隔符。
在这种情况下,管道符(|
)似乎是一个安全的赌注。所以让你的字符串是这样的:
string input = "2.2214E-18|database_name|collection_name";
然后您可以拆分该角色并检索单独的值:
string[] output = input.Split('|');
然后确保在使用之前验证输出:
if (output.Length != 3)
{
throw new ArgumentException("input", "Useful error message here");
}
string value = output[0];
string databaseName = output[1];
string collectionName = ouput[2];