【问题标题】:deciphering WebResponse string into list of arrays将 WebResponse 字符串解密为数组列表
【发布时间】:2012-07-17 20:44:32
【问题描述】:

网站上有一个 PHP 脚本。我还有一个 C# winforms 程序,它使用 WebRequest/WebResponse 方法发送 POST 消息。

此 PHP 脚本连接到 mysql 数据库,获取一些数据并将其发送回 WinForms 应用程序。数据格式如下:

32 岁的约翰可能

彼得,6 月 24 日

等等。

所有这些文本都作为单个字符串发送。 将这个字符串破译成字符串列表的最佳方法是什么?

现在我正在使用自制的方法。 PHP 脚本执行以下操作:

  • 首先我们用“,”分隔每个单词

  • 然后我们用“|”分隔每一行

当我收到消息时,我使用“|”将其划分为一个列表信

List<string> names = input.Split('|').ToList<string>();

然后我在列表中划分每个字符串:

List<string[]> namestwo = new List<string[]>();
foreach (string str in names)
{
string[] sep = str.Split(',').ToArray();
namestwo.Add(sep);
}

我想有更好的方法来做到这一点..

【问题讨论】:

  • 由于您的数据不包含任何实际的逗号 (',') 或竖线 ('|'),这是一种完全可以接受的方法。
  • 好吧,实际上在我的示例中它不包含逗号.. 但在现实生活中,我不排除有人会在名称中使用逗号的可能性.. 即“nick,nam| e".. 那是它变得复杂的时候(整行看起来像这样:"nick,nam|e,56,August|someone,15,may")

标签: c# winforms data-transfer encryption


【解决方案1】:

您的一般方法很好。在发送这样的数据时使用分隔符是很常见的。显然,您需要确保您的数据中永远不会有任何逗号(',')或管道('|'),或者您正确转义这些字符,然后在解析时正确处理它。如果您发现自己有很多逗号或管道,您可以考虑使用其他分隔符(制表符是一个不错的选择,因为您通常可以用几个空格替换数据中的所有制表符,而不是转义它们)。

如果您愿意,可以稍微清理一下代码。像这样的东西对我来说看起来更好,但它基本上会做同样的事情:

var result = input.Split('|')
             .Select(line => line.Split(',').ToList()).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2015-11-01
    • 2011-09-19
    相关资源
    最近更新 更多