今天,是第一次写文章,希望自己以后可以坚持下去,也希望自己的经验带给更多人好处。
有这样一个问题,有时候我明年会需要替换字符串中的数字,比如"213424113"中 要替换所有的1为26,
结果期望是"2263424113",如果用.net string的 Replace方法 结果会是"226342426263",如何准确的替换呢?
经过我和几个朋友研究,用以下的代码就可以了,与大家分享
有这样一个问题,有时候我明年会需要替换字符串中的数字,比如"213424113"中 要替换所有的1为26,
结果期望是"2263424113",如果用.net string的 Replace方法 结果会是"226342426263",如何准确的替换呢?
经过我和几个朋友研究,用以下的代码就可以了,与大家分享
1
/// <summary>
2
/// 替换字符串中的数字
3
/// </summary>
4
/// <param name="str">字符串</param>
5
/// <param name="oldvalue">旧数字</param>
6
/// <param name="newvalue">新数字</param>
7
/// <returns>替换后的字符串</returns>
8
public string ReplaceInt(string str,string oldvalue,string newvalue)
9
{
10
11
string res = "";
12
string c = oldvalue;
13
char back , next;
14
string r = newvalue;
15
for(int i = 0 ; i < str.Length ; i++)
16
{
17
if ( i + c.Length <= str.Length && str.Substring(i, c.Length) == c)
18
{
19
back = (i == 0 ? '*' : str[i - 1]);
20
next = (i + c.Length == str.Length ? '*' : str[i + c.Length]);
21
if ((back >= '0' && back<= '9') || (next >= '0' && next<= '9'))
22
{
23
res += str[i];
24
continue;
25
}
26
27
res += r;
28
i += c.Length -1;
29
continue;
30
}
31
res += str[i];
32
}
33
return res;
34
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34
