c# - 使用字符分隔符构建具有特定模式的字符串

标签 c# string linq lambda

我想要一个这种格式的字符串

 name1,date1|name2,date2

为此我编写了一个方法

int ifirstStringLength = strFirstStringArray.Length;
int iSecondStringLength = strSecondStringArray.Length;

if (ifirstStringLength != iSecondStringLength)
    throw new Exception("First and Second Array should be of same length");

for (int index = 0; index < ifirstStringLength; index++)
{
     strCombinedString = strCombinedString + strFirstStringArray[index] + chrElementSeprator.ToString() + strSecondStringArray[index];
     if (index < ifirstStringLength - 1)
         strCombinedString = strCombinedString + chrItemSeperator.ToString();
}

return strCombinedString;

问题1:
这是一个好方法还是更好的方法?

问题2:
知道我是否想使用 linq/lambda 表达式来实现此目的吗?

更新:

我的输入是

        string[] names = {"name1","name2"};
        string[] dates = {"date1","date2"};

抱歉沟通不畅

最佳答案

想法是将名称和日期分开,然后压缩两个序列,一次组合一个名称-日期对。之后用“|”连接每一对符号

string[] names = {"name1", "name2"};
string[] dates = {"date1", "date2"};

var pairs = names.Zip(dates, (name, date) => name + "," + date);

string result = string.Join("|", pairs);

Console.WriteLine(result);

打印:

name1,date1|name2,date2

关于c# - 使用字符分隔符构建具有特定模式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16699411/

相关文章:

c++ - 确定数字(编码为字符串)是否适合 C++ 中的 64 位整数?

c# - 比较 List 中的所有项目并返回新列表

c# - 让球跳跃

c# - 工具箱中没有报告项 (VS 2008 SP1)

c# - ORM 与 NoSQL API 是多余的吗?

c++ - 如何在循环移位后从给定字符串中找到一组不同的字符串?

java - 使用递归错误。线程中的异常 "main"java.lang.StringIndexOutOfBoundsException : String index out of range: 0

c# - 无法从用法推断。尝试显式指定类型参数

c# - 是否可以在 Linq 的 1 个 join 语句中添加多个 'on'

c# - .NET Core 2/Identity Server 4 - 刷新所有声明