联接字符串并使用多个分隔符分隔它
本文关键字:分隔符 分隔 字符 字符串 串并 | 更新日期: 2023-09-27 18:35:45
我的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);
}
使用 StringBuilder。
假设您的数据以"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(", (");
}
}
}
如果每个trade
都已经像name;quant
:
string result = trades.Count == 0 ?
string.Empty :
"(" + string.Join("), (", trades.ToArray()) + ")";
请注意,在较新版本的 .NET 中,不需要 trades.ToArray()
中的.ToArray()
:
string result = trades.Count == 0 ?
string.Empty :
"(" + string.Join("), (", trades) + ")";