c# - 如何使用 LINQ 有条件地创建新的字符串数组?
问题描述
我有一个字符串数组,如下所示:
string[] myStrings = new string[] {"P1111111F","N1111110","Z2","P1111111F","Z1111110"};
如何使用 LINQ 检查每个字符串的长度 = 8 并以“0”结尾以获得以下内容:
result: {"N","Y","N","N","Y"};
myStrings 使用重复字符串可能会更长,所以我想实现一个不重新处理已经考虑过的字符串的解决方案。
解决方案
直截了当的方法:
string[] results = myStrings
.Select(s => s?.Length == 8 && s.EndsWith("0") ? "Y" : "N")
.ToArray();
避免加倍算法的微优化方式ToArray
:
string[] results = new string[myStrings.Length];
for(int i = 0; i < myStrings.Length; i++)
{
string s = myStrings[i];
results[i] = s?.Length == 8 && s.EndsWith("0") ? "Y" : "N";
}
myStrings
重复字符串可能会更长,所以我想实现一个不重新处理已经考虑过的字符串的解决方案。
我认为将这些结果缓存在例如 a 中Dictionary<string, string>
根本没有帮助。检查是否如此简单和快速,以至于任何查找都会降低效率。你只会浪费内存。
推荐阅读
- reactjs - 反应姿势翻转动画,例如缩略图全屏
- excel - 对象变量或未设置块变量 - 运行时错误“91”
- mongodb - 如何使用 pymongo MongoClient 构造函数在给定时间限制后中止 mongo 操作?
- c++ - 计算斐波那契的模板元编程
- c++ - boost::any 如何检查空值/未定义值
- python - 矩阵的numpy multiply()中出现意外的尖括号“<”
- laravel-4 - 在 Laravel 4 上更新 Imagemagick
- javascript - 是否可以在没有 Photoshop 的情况下在 html、css 或 javascript 的文本中附加图像?
- python-3.x - 如何在 Python 3 中验证来自 GitHub webhook 的有效负载?
- gem5 - 在arm上运行gem5完整系统模式时出错