c# - 在每个循环中连接字符串
问题描述
我使用两个 for each 循环将值连接到一个变量中,这样我就可以在 Find/Replace 方法中将值写入 Word。我的问题是以下语法会将值写入控制台两次,因此将其写入控制台
Shirt - SH11
Hat - HA22
Socks - SO33
Shirt - SH11
Hat - HA22
Shirt - SH11
我希望写入控制台的是值,如下所示:
Shirt - SH11
Hat - HA22
Socks - SH11
这是我的语法:
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("ItemsSold", typeof(string));
table.Columns.Add("ItemIDs", typeof(string));
table.Rows.Add("James Jo", "Shirt; Hat; Socks;", "SH11; HA22; SO33");
var itemsSold = table.Rows[0].Field<string>("ItemsSold").Split(new string[] {"; "}, StringSplitOptions.RemoveEmptyEntries);
var ItemIDs = table.Rows[0].Field<string>("ItemIDs").Split(new string[] {"; "}, StringSplitOptions.RemoveEmptyEntries);
string displayformat = "";
foreach (string is in itemsSold)
{
foreach (string id in ItemIDs)
{
string s = is.Replace(";", "");
string d = id.Replace(";", "");
displayformat += s + " - " + d + Environment.NewLine;
}
}
Console.WriteLine(displayformat);
解决方案
如果您真的想循环执行此操作,则需要将其修改为
for(int i=0;i<itemsSold.Count();i++)
{
string s = itemsSold[i].Replace(";", "");
string d = ItemIDs[i].Replace(";", "");
displayformat += s + " - " + d + Environment.NewLine;
}
但是,请注意,这可以通过 Zip 方法轻松完成。而不是整个循环,你可以写
displayformat = string.Join(Environment.NewLine,
itemsSold.Zip(ItemIDs,
(items, ids) => $"{items} - {ids}").Replace(";",string.Empty));
Console.WriteLine(displayformat);
你可以在这里阅读 Enumerable.Zip
推荐阅读
- angular - 实现一个简单的单位转换器
- java - java - 为异步任务时间限制制作if
- c++ - 不能使用字符串类来分配字符,但可以在 C++ 中使用 char 数组
- javascript - 在 TypeScript 中声明类型“数字”
- php - 在woocommerce中买一送一,无需优惠券代码
- docker - docker checkout 或还原 docker diff 中的文件
- angular - 如何在 Ionic Creator 上使用 Injector 功能?我可以创建登录应用程序吗?
- mysql - 如何在存储过程中加入表
- c# - 托管在 Windows 服务中的 WCF 服务在停止时挂起
- css - CSS过滤器反转规则破坏Chrome 68上的固定位置