我想要有一个这种格式的字符串
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"};抱歉,沟通有误
发布于 2013-05-23 02:52:13
我的想法是将名字和日期分开,然后压缩两个序列,一次组合一个名字-日期对。之后,用'|‘符号连接每一对
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发布于 2013-05-23 02:52:21
对我来说,您的代码似乎是不必要的复杂。不完全确定这将满足您的所有要求,但我会这样做;
//assuming both strings are comma delimited
string[] nameTokens = nameString.Split(',');
string[] dateTokens = dateString.Split(',');
string result;
if (nameTokens.Length == 2 && dateTokens.Length == 2)
result = String.Format("{1},{2}|{3},{4}", nameTokens[0], dateTokens[0], nameTokens[1], dateTokens[1]);
else
Console.WriteLine("BAD INPUT");说明:我从拆分name和date字符串开始,所以我有两个字符串数组。然后我检查长度以确保每个长度都有2个元素(防止数组越界异常)。之后,我使用String.Format方法以指定的格式创建一个新字符串。然而,使用LINQ有更短的解决方案可用,这确保您不会得到超出界限的数组异常,并且不能更直接。
发布于 2013-05-23 02:54:36
你可以使用LINQ的Select方法。其中一个重载需要Func。这将为您提供数组中当前字符串的索引。
var result = string.Join("|",
names.Select((s, index) => string.Format("{0},{1}", s, dates[index])));https://stackoverflow.com/questions/16699411
复制相似问题