当前位置: 首页 > 编程语言 > C#

从字符串数组中替换字符串的所有出现分享

时间:2023-04-11 00:14:01 C#

C#学习教程:从字符串数组中替换所有出现的字符串"二","三","一","二","一"};我想一次用零替换所有这些。那么项目应该是:{“零”,“二”,“三”,“零”,“二”,“零”};我找到了一个解决方案如何替换字符串数组中的项目?.但它只会取代第一次出现。哪个是替换所有事件的最佳方式/方法?没有循环就没有办法做到这一点……甚至是像这样的内部循环:string[]items={"one","two","three","one","two","one"};string[]items2=items.Select(x=>x.Replace("one","zero")).ToArray();我不确定为什么你的要求是你不能循环……但是,它总是需要循环。有一种无需循环遍历每个元素即可替换它的方法:string[]items={"zero","two","three","zero","two","zero"};除此之外,您必须遍历数组(for/lambda/foreach)抱歉,您必须循环。没有绕过它。此外,所有其他答案都会为您提供一个包含所需元素的新数组。如果您希望同一个数组修改其元素,正如您的问题所暗示的那样,您应该这样做。for(intindex=0;索引很简单。为了避免每次需要时都在代码中编写循环,创建一个方法:,"one","zero");你也可以把它变成一个扩展方法:staticclassArrayExtensions{publicstaticvoidReplaceAll(thisstring[]items,stringoldValue,stringnewValue){for(intindex=0;index然后你可以这样称呼它:items.ReplaceAll("one","zero");当你这样做的时候,你可能想让它成为通用的:staticclassArrayExtensions{publicstaticvoidReplaceAll(thisT[]items,ToldValue,TnewValue){for(intindex=0;indexcallsiteslookthesame.Right,thesemethodssupportcustomstringequalitychecks.例如,您可能希望比较区分大小写或大小写-不敏感的写。添加一个采用IEqualityComparer的重载,以便您可以提供您喜欢的比较;这更灵活,无论T是字符串还是其他东西:}publicstaticvoidReplaceAll(thisT[]items,ToldValue,TnewValue,IEqualityComparercomparer){for(intindex=0;indexyour也可以并行执行:Parallel.For(0,items.Length,idx=>{if(items[idx]=="one"){item[idx]="zero";}});string[]items={"one","two","three","one","two","one"};items=items.Select(s=>s!="one"?s:"zero").ToArray();从这里找到答案。你可以试试这个,但我认为,它也会循环。字符串[]项={“一个”,“两个”,“三个”,“一个”,“两个”,“一个”};varstr=字符串。加入(“,”,项目);varnewArray=海峡。替换(“一”,“零”)。拆分(新字符[]{','});string[]items={"one","two","three","one","two","one"};如果你想要它,你指定索引方式:intn=0;while(true){n=Array.IndexOf(items,"one",n);如果(n==-1)中断;项目[n]=“零”;}但是LINQ是比较好的C#学习教程,希望大家多多关注---varlst=fromiteminitemsselectitem=="one"?“零”:项目;字符串[]newarry=items.Select(str=>{if(str.Equals("one"))str="zero";returnstr;}).ToArray();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: