替换时忽略特定字符串的出现

时间:2017-03-12 22:25:55

标签: c# parsing replace

我试图解析数据库并替换":"使用另一个分隔符,例如" +分隔符+"。这个问题是这个特定的数据库有一个hash:salt组合。有些盐含有额外的"""并且有些不含盐。如何更换所有":"&忽略哈希中的那些

示例:

1:john:john@john.com:127.0.0.1:341b4d30d4f5bb31f291633e0c97a8ba:J:|

我想忽略冒号:

341b4d30d4f5bb31f291633e0c97a8ba:J:|

但我想用" +分隔符+"

替换其他冒号

2 个答案:

答案 0 :(得分:1)

String.Split() methodList<Card> cardShuffledList = Arrays.asList(cardsShuffled); 作为其第二个参数:

count

字符串string input = "1:john:john@john.com:127.0.0.1:341b4d30d4f5bb31f291633e0c97a8ba:J:|"; string[] fields = input.Split(new[]{ ':' }, 5); 现在包含值fields[4]

要完成替换操作,请使用String.Join使用新的分隔符连接字符串:

341b4d30d4f5bb31f291633e0c97a8ba:J:|

答案 1 :(得分:1)

如果您的字符串始终采用您指定的格式:

1:john:john@john.com:127.0.0.1:341b4d30d4f5bb31f291633e0c97a8ba:J:|

您可以使用String.Split(Char[], Int32)重载来指定返回的最大子串数。指定5子字符串,最后的子字符串将包含输入字符串的其余部分,即散列字段。

string input = "1:john:john@john.com:127.0.0.1:341b4d30d4f5bb31f291633e0c97a8ba:J:|";
string[] array = input.Split(new char[] { ':' }, 5);

然后,您可以使用String.Join方法将字符串数组与所需的分隔符连接。

string output = String.Join("+delimiter+", array);