我有以下字符串:
string input = " 2 1";
2 spaces
后跟2
,然后2 more spaces
后跟1
。我想对它进行替换,但我只想用{0}替换2
和1
之间的空格,如果可能的话我不想使用RegEx?
最终结果应如下所示:
string result = " 2001";
20 340400 1
- 20-34-04-00-00001.0-0000.00
20 340400 500
- 20-34-04-00-00500.0-0000.00
20 340900 C
- 20-34-09-00-0000C.0-0000.00
20 3435OG 1 1
- 20-34-35-OG-00001.0-0001.00
20 3435OG 2 10
- 20-34-35-OG-00002.0-0010.00
20 3435OG A
- 20-34-35-OG-0000A.0-0000.00
20 3436AA 1 4A
- 20-34-36-AA-00001.0-0004.A
20 3436AA 2 10B
- 20-34-36-AA-00002.0-0010.B
20 353100 268
- 20-35-31-00-00268.0-0000.00
20G3402AI 1 401
- 20G-34-02-AI-00001.0-0004.01
20G3403AI 7 1
- 20G-34-03-AI-00007.0-0001.00
20G3416MK 1701
- 20G-34-16-MK-00000.0-0017.01
21 3410OM 148
- 21-34-10-OM-00000.0-0147.00
我注意到的一些事情是前4个部分放在一起,大部分空格和小数被删除。在大多数情况下,我没有正则表达式就取得了成功,但对某些人来说却失败了。
答案 0 :(得分:2)
怎么样:
static string ReplaceSpacesWithZerosExceptLeading(string s)
{
return s.TrimStart(' ').Replace(' ', '0').PadLeft(s.Length);
}
这将删除前导空格,然后用零替换其余的空格,然后重新开启前导空格。
编辑:没关系,这个答案已经存在......
答案 1 :(得分:1)
string input = " 2 1";
string result = string.Format(" {2}00{4}", input.Split(' ')); //Gives " 2001"
答案 2 :(得分:0)
var result = input.TrimStart().Replace(' ', '0'); // "2001"
如果前导空格很重要,那么:
var result = input.TrimStart().Replace(' ', '0').PadLeft(input.Length, ' ');
答案 3 :(得分:0)
尝试(Input.Trim()).Replace(" ", "0");
答案 4 :(得分:0)
你真的应该使用RegEx,但你也可以尝试:
input.Replace(input.Trim(), input.Trim().Replace(" ", "0"));
显然它不是最佳的,但它应该可以解决问题。
答案 5 :(得分:0)
string txt = " 2 1";
string txt1 = txt.Substring(0, (txt.Length - txt.TrimStart().Length)) + txt.TrimStart().Replace(" ", "0");
Debug.WriteLine(txt1);
或如果数字在范围内
long num = long.Parse(txt.Replace(" ", "0"));
txt1 = num.ToString().PadLeft(txt.Length);
Debug.WriteLine(txt1);
答案 6 :(得分:0)
只是为了你可以使用Linq的乐趣:
string result = string.Format("{0}{1}{2}",
new string(input.Take(3).ToArray()), //get first three values
"00", //insert 00
new string(input.Skip(5).ToArray())); //get last value