【发布时间】:2019-12-01 06:54:09
【问题描述】:
所以我想创建一个信用卡编码器(如果这甚至是一个单词),它接受一个字符串并将字符串的前 10 位数字作为'*'
这是我想出的代码:
public static string[] ToCencoredString(this string str)
{
char[] array = Enumerable.Repeat('*', str.Length-1).ToArray();
array = array.Select((cha, index) =>
{
if (index < 10)
array[index] = str[index];
});
}
(忽略函数返回string[]的事实,还有另一部分不相关的代码)
我不知道为什么,但我不断收到ArgumentNullException,这很奇怪,因为array 中没有一个值是null。
我做错了什么?
【问题讨论】:
-
String.Substring可能更容易,然后将剩下的内容添加到new string('*'); -
为什么不用子字符串进行简单的连接?
return "******" + str.Substring(10); -
@AleksAndreev 我需要这种格式的代码,因为您从函数调用者那里获取的缺少参数作为 cencor 字符串长度存在更多重载
-
你为什么返回
string[]? -
我觉得你应该把
str.Length-1改成str.Length
标签: c# arrays linq lambda char