我的curernt方法将发送一个如下所示的交易列表:“name; quant; name; quant”等....
我希望能够像这样发送它:“(name; quant),(name; quant)”,客户端以这种方式为它们提供更可读的方式。
我没有在MSDN网站上看到这样做的方法,这里的例子都是用Python编写的。
public void Send(Socket handler, List<String> trades)
{
//Converts List into string
var result = string.Join(";", trades.ToArray());
// Convert the string data to byte data using ASCII encoding.
//calls the object to array method to convert it to a byte array
byte[] byteData = Encoding.ASCII.GetBytes(result);
// Begin sending the data to the remote device.
handler.BeginSend(byteData, 0, byteData.Length, 0,
new AsyncCallback(SendCallback), handler);
}
答案 0 :(得分:2)
假设您的数据在列表中的格式为:“name; quant”,您可以使用:
StringBuilder sb = new StringBuilder();
sb.Append("(");
for (int i = 1; i <= trades.Count; i++)
{
sb.Append(trades[i]);
sb.Append(")");
if (i < trades.Count)
{
sb.Append(", (");
}
}
否则,如果您的列表如“name”,“quant”,“name”,“quant”,您可以使用:
StringBuilder sb = new StringBuilder();
sb.Append("(");
for (int i = 1; i <= trades.Count; i++)
{
sb.Append(trades[i]);
if (i%2 == 0)
{
sb.Append(";");
}
else
{
sb.Append(")");
if (i < trades.Count)
{
sb.Append(", (");
}
}
}
答案 1 :(得分:1)
如果每个trade
已经像name;quant
那样:
string result = trades.Count == 0 ?
string.Empty :
"(" + string.Join("), (", trades.ToArray()) + ")";
请注意,在较新版本的.NET中,您不需要.ToArray()
中的trades.ToArray()
:
string result = trades.Count == 0 ?
string.Empty :
"(" + string.Join("), (", trades) + ")";