首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用字符分隔符构建具有特定模式的字符串

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

Stack Overflow用户
提问于 2013-05-23 02:46:24
回答 4查看 133关注 0票数 2

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

代码语言:javascript
复制
 name1,date1|name2,date2

为此,我编写了一个方法

代码语言:javascript
复制
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表达式来实现这一点,你知道吗?

更新:

我的输入是

代码语言:javascript
复制
        string[] names = {"name1","name2"};
        string[] dates = {"date1","date2"};

抱歉,沟通有误

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-23 02:52:13

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

代码语言:javascript
复制
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);

打印:

代码语言:javascript
复制
name1,date1|name2,date2
票数 3
EN

Stack Overflow用户

发布于 2013-05-23 02:52:21

对我来说,您的代码似乎是不必要的复杂。不完全确定这将满足您的所有要求,但我会这样做;

代码语言:javascript
复制
  //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有更短的解决方案可用,这确保您不会得到超出界限的数组异常,并且不能更直接。

票数 1
EN

Stack Overflow用户

发布于 2013-05-23 02:54:36

你可以使用LINQ的Select方法。其中一个重载需要Func。这将为您提供数组中当前字符串的索引。

代码语言:javascript
复制
var result = string.Join("|", 
    names.Select((s, index) => string.Format("{0},{1}", s, dates[index])));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16699411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档