如何在字符串的每个字符前后添加专属字符串?
解决方案
这其实是个很典型的字符串拼接问题,核心思路就是逐个遍历原字符串的每个字符,将对应位置的前置字符串、当前字符、后置字符串拼接成片段,最后把所有片段合并起来就是最终结果。我分两种常见场景给你写示例代码:
C# 实现
场景1:所有字符共用同一组前置/后置字符串
如果所有字符的前后缀都一样(就像你例子里的B和C),可以用LINQ或者循环来快速实现:
// 用LINQ的简洁写法 string original = "AAAA"; string beforeChar = "B"; string afterChar = "C"; string converted = string.Concat(original.Select(c => beforeChar + c + afterChar)); Console.WriteLine(converted); // 输出:BACBACBACBAC
如果是新手想更直观理解,用StringBuilder循环拼接更清晰(大字符串场景下也更高效):
string original = "AAAA"; string beforeChar = "B"; string afterChar = "C"; StringBuilder resultBuilder = new StringBuilder(); foreach (char c in original) { resultBuilder.Append(beforeChar); resultBuilder.Append(c); resultBuilder.Append(afterChar); } string converted = resultBuilder.ToString(); Console.WriteLine(converted);
场景2:每个位置的字符有专属前置/后置字符串
如果每个字符需要不同的前后缀,只需要准备对应位置的前后缀数组,遍历的时候按索引取对应值即可:
string original = "AAAA"; // 每个位置对应的前置、后置字符串数组 string[] beforeList = {"B", "D", "F", "H"}; string[] afterList = {"C", "E", "G", "I"}; StringBuilder resultBuilder = new StringBuilder(); for (int i = 0; i < original.Length; i++) { resultBuilder.Append(beforeList[i]); resultBuilder.Append(original[i]); resultBuilder.Append(afterList[i]); } string converted = resultBuilder.ToString(); Console.WriteLine(converted); // 输出:BACDECFEGHIA
Python 实现
场景1:统一前置/后置字符串
Python里用列表推导式就能一行搞定:
original = "AAAA" before_char = "B" after_char = "C" converted = ''.join([before_char + c + after_char for c in original]) print(converted) # 输出:BACBACBACBAC
场景2:每个位置专属前后缀
用enumerate遍历同时拿到索引和字符,再对应取前后缀数组的值:
original = "AAAA" before_list = ["B", "D", "F", "H"] after_list = ["C", "E", "G", "I"] converted = '' for idx, char in enumerate(original): converted += before_list[idx] + char + after_list[idx] print(converted) # 输出:BACDECFEGHIA
小提示
不管用哪种语言,尽量避免直接频繁拼接字符串(比如Python里+=循环拼接大字符串),因为字符串是不可变类型,每次拼接都会生成新对象,效率较低。用StringBuilder(C#)或者先收集所有片段到列表再join(Python)是更优的做法。
内容的提问来源于stack exchange,提问作者Korsun Pavel
相关产品推荐
相关产品推荐

