字符串任意两个位置替换

chenhaoying 2011-06-13 09:02:04
比如字符串1234,
我想任意替换两个位置的字符为*,得到结果是:**34,*2*4,*23*,1**4,1*3*,12**。
除了循环遍历替换的笨方法外,还有没有好的方法?
...全文
194 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2011-06-13
  • 打赏
  • 举报
回复
不要用字符串的replace方法,应该转换为字符数组,再对数组的元素赋值。
种草德鲁伊 2011-06-13
  • 打赏
  • 举报
回复
就是循环遍历了

先是遍历两个连续的
**34,1**4, 12**

然后是隔开一个字符的
*2*4,1*3*

再就是隔开两个字符的
*23*

这样应该很容易看出规律..
风骑士之怒 2011-06-13
  • 打赏
  • 举报
回复
如果兔子哥的答案就是你的需求,那我表示,我理解错了。
dalmeeme 2011-06-13
  • 打赏
  • 举报
回复
循环遍历替换应该是最好的方法了,没有其他更好的方法了。
q107770540 2011-06-13
  • 打赏
  • 举报
回复
string str="1234";
var query=str.ToCharArray().OrderBy(s=>Guid.NewGuid()).Take(2);
query.ToList().ForEach(q=>str=str.Replace(q,'*'));
Console.WriteLine(str);
bdmh 2011-06-13
  • 打赏
  • 举报
回复
直接用索引
string s = "1234";
s[0] = "*";
kkbac 2011-06-13
  • 打赏
  • 举报
回复
先获得字符的长度,
之后for循环赋值一个 List<int>
之后用OrderBy(s=>Guid.NewGuid()).Take(需要替换的字符数).方法取得替换的位置.
之后用substring替换字符中的字符.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧