有个题目:将字符串str1从字符串str2中完全删除,用C#实现
我问了是不是用代码实现,得到的反馈是,我的答案很简单:
if(String.IsEmptyOrNull(str1)) return; if(String.IsEmptyOrNull(str2)) return; str2=str2.Replace(str1,String.Empty); |
对方问我这种方法能否把所有的字串给replace掉,我当时小懵了一下。因为我不确定replace是全部还是遇到第一个匹配的就replace后就返回。
我就回答,可以用递归。
于是让我用递归来做:
public void Replace(ref string str1, ref string str2) { if(String.IsEmptyOrNull(str1)) return; if(String.IsEmptyOrNull(str2)) return; if(str2.IndexOf(str1)==-1) return;else str2=str2.Replace(str1,String.Empty); Replace(ref str1,ref str2); } |
各位看官估计能够看出,这个办法是可行的。
但是结果是,我试了我第一个方法,也是可能的。
到现在我就明白了,他们是想让人实现String的Replace原理,结果却出错了。其实简单,题目要求里禁止用自带的方法或者实现string的replace代码。