Ubbi Dubbi编码C#实现:如何在每个元音前正确添加ub前缀
问题根因
现有代码仅调用一次IndexOfAny方法,只能定位到字符串中第一个出现的元音位置,仅执行一次插入操作,所以只能处理单个元音,无法覆盖单词中所有元音字母。
修正代码
提供两种实现方式:
方式1:遍历字符拼接(逻辑直观,性能更稳定)
Console.Write("Enter word: "); string word = Console.ReadLine(); HashSet<char> vowels = new HashSet<char> {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}; StringBuilder resultBuilder = new StringBuilder(); foreach (char c in word) { // 遇到元音先加ub前缀,再加原字符 if (vowels.Contains(c)) { resultBuilder.Append("ub"); } resultBuilder.Append(c); } Console.WriteLine(resultBuilder.ToString());
方式2:正则替换(代码更简洁)
Console.Write("Enter word: "); string word = Console.ReadLine(); // 匹配所有元音字符,替换为ub加原匹配字符 string result = System.Text.RegularExpressions.Regex.Replace(word, "[aeiouAEIOU]", "ub$0"); Console.WriteLine(result);
两种方式输入hello时都会输出预期的hubellubo。
内容的提问来源于stack exchange,提问作者Aleksandar Yordanov
相关产品推荐
相关产品推荐

