C# 如何解决这个逻辑
编写一个函数,该函数接受字符串输入并删除所有大于或等于给定数字的字符C# 如何解决这个逻辑,c#,C#,编写一个函数,该函数接受字符串输入并删除所有大于或等于给定数字的字符 RemoveCharacters(“西班牙语”,2)应返回“panih” RemoveCharacters(“西班牙语”,3)应返回“西班牙语” string text=“西班牙语”; var sb=新的StringBuilder(text.Length); int maxCount=2; int currentCount=2; char specialChar='S'; foreach(文本中的字符c) 如果(c!=spec
RemoveCharacters(“西班牙语”,2)
应返回“panih”
RemoveCharacters(“西班牙语”,3)
应返回“西班牙语”
string text=“西班牙语”;
var sb=新的StringBuilder(text.Length);
int maxCount=2;
int currentCount=2;
char specialChar='S';
foreach(文本中的字符c)
如果(c!=specialChar | |++currentCount c!='S'| |++commasFound,让我们分两步处理字符串:
找出要删除的字符(出现次数大于或等于计数次数)
从字符串中删除此类字符
实施
private static String RemoveCharacters(string value, int count) {
if (string.IsNullOrEmpty(value))
return value;
else if (count <= 1)
return "";
HashSet<char> toRemove = new HashSet<char>(value
.GroupBy(c => char.ToUpper(c))
.Where(chunk => chunk.Count() >= count)
.Select(chunk => chunk.Key));
return string.Concat(value.Where(c => !toRemove.Contains(char.ToUpper(c))));
}
结果:
Spanish => 'panih' // S is removed
bla-bla-bla => '' // all characters are removed
Abracadabra => 'cd' // A, b, r are removed
<>我不是为你写作业,而是考虑使用字典。重复你的单词中的字符。如果它存在于你的字典中,增加那个元素。否则把它插入到你的字典中,值为1。然后重复你的字典键并指出哪些超出了你的目标。最后,写出你的字符串,排除那些C。角色。您的问题到底是什么?此代码是否如您所期望的那样工作?如果是,它会返回什么,而您期望的是什么?“平移”它的显示方式是这样的…我想登录上述问题
string[] tests = new string[] {
"Spanish",
"bla-bla-bla",
"Abracadabra",
};
string report = string.Join(Environment.NewLine, tests
.Select(test => $"{test,-15} => '{RemoveCharacters(test, 2)}'"));
Console.Write(report);
Spanish => 'panih' // S is removed
bla-bla-bla => '' // all characters are removed
Abracadabra => 'cd' // A, b, r are removed