问题:批量替换字符串。定义字符串对PairString{OldValue,NewValue}。
OldValue<------>NewValue
称---->为右过滤,简称过滤。<----为左过滤,或反过滤。
给定字符串S,一个PairString数组,用PairString数组过滤S(左、右可设置)。
程序实现:
(1)PairString
1
public struct PairString
2
}
2
(2)采用Replace实现
1
public class StringFilter
2
}
2
(3)批量替换。我最先采用Hashtable实现,测试结果发现性能比较低,然后就直接改用数组实现,写一个hash函数,将待换字符串hash到数组。flexIndex是松弛系数。
1
public class StringBatchFilter:StringFilter
2
}
2
(4)例子
1
StringBatchFilter sk = new StringBatchFilter();
2
3
PairString[] p =
4
);
2
3
4
一般来说,如果待换字符串在10个以下,使用Replace性能较高。10个以上的,批量替换的优势就体现出来了。