这是我的代码。我想要一个与此相同的输出。
int i = 1;
List<char> cccc = new List<char>();
List<char> aaaa = new List<char>(){'H','e','l','l','o','g','o','o','d','m','o','r','n','i','n'};
List<char> dddd = new List<char>(){'e','l','g','o','d'};
while (i <= aaaa.Count())
{
foreach(char ch in dddd)
{
bool a = aaaa.Any(c => aaaa.Contains(ch));
if (aaaa.Contains(ch))
{
cccc.Add(ch);
}
else
{
cccc.Add('-');
}
i++;
}
}
cccc.ForEach(x=>{
Console.Write(x+" ");
});
如果dddd数据在aaaa中,则cccc数据将保留,而如果为false,则将被'-'替换。
让我们看看在没有编程的情况下如何解决这个问题,并且您可以通过在伪代码中应用类似的过程来解决它:
(1( 检查aaaa
中的每个字符
(2( 如果字符存在于dddd
中,则将其保持为
(3( 否则,输出-
而不是
我们可以通过使用for
、foreach
或while
循环在aaaa
上迭代来求解(1(,如@Arphile和您的解决方案中所示。
另一方面,我们也可以通过使用(1(中类似的方法来求解(2(,因为我们需要在dddd
上迭代以查找是否存在匹配。幸运的是,我们可以通过使用Contains
来节省这项工作,如@Arphile的回答所示。
最后,条件可以使用if-else
或elvis/条件运算符?:
来实现。
将所有这些与LINQ结合起来,我们将得到这样的东西:
char[] charList = new [] { 'H','e','l','l','o','g','o','o','d','m','o','r','n','i','n','g' };
char[] allowedChars = new [] { 'e','l','g','o','d' };
IEnumerable<char> filteredChars = charList.Select(c => allowedChars.Contains(c) ? c : '-');
// Output : -,e,l,l,o,g,o,o,d,-,o,-,-,-,-,g
Console.WriteLine(string.Join(",", filteredChars));
旁注:如果您想将过滤后的字符保留在数组中,则可以附加ToArray
。
List<char> output = new List<char>();
List<char> input = new List<char>() { 'H', 'e', 'l', 'l', 'o', 'g', 'o', 'o', 'd', 'm', 'o', 'r', 'n', 'i', 'n' };
List<char> compare = new List<char>() { 'e', 'l', 'g', 'o', 'd' };
foreach(char curr in input)
{
bool isCurrInCompare = compare.Any(x => x.Equals(curr));
if (isCurrInCompare)
output.Add(curr);
else
output.Add('-');
}
output.ForEach(x => Console.Write(x + " "));
因为我认为这是家庭作业的一部分,所以我不会给你一个完美的解决方案。
但是,我认为这段代码将引导您找到解决方案。
List<char> aaaa = new List<char>(){'H','e','l','l','o','g','o','o','d','m','o','r','n','i','n'};
List<char> dddd = new List<char>(){'e','l','g','o','d'};
for ( int i = 0 ; i < aaaa.Count; i++ ) {
if ( !dddd.Contains(aaaa[i])) { // if a char is not contained in dddd
Console.Write('-');
}
else { // if a char is contained in dddd
Console.Write(aaaa[i]);
}
}
如果dddd包含aaaa的字符,则此代码将打印为已替换。
输出为"-ellogood-o-----">
希望这段代码能对你有所帮助。
List<decimal> money= new List<decimal>();
int k = 1;
while (k <= arrayresult.Count())
{
foreach (transaction_details txn in transactions)
{
if (arrayresult.Contains(txn .Transdate.ToString("yyyy-MM-dd")))
{
var a = txn .Transdate.ToString("yyyy-MM-dd");
money.Add(txn .Debit);
}
else
{
var b = "";
money.Add(0);
}
k++;
}
}
// arrayresult is a list of dates.