联接字符串并使用多个分隔符分隔它

本文关键字:分隔符 分隔 字符 字符串 串并 | 更新日期: 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) + ")";