首先拆分然后加入字符串的子集

我有一个输入字符串如下:

thumb_634735515600845357tchayat_november_200612.jpg 

我想要做的是首先用_ 分割这个字符串。 然后将得到的标记放在1到n的位置并加入它们。

具体来说,就我的样本输入而言,这是我想要的输出。 如您所见, thumb_已从字符串的前面删除:

 634735515600845357tchayat_november_200612.jpg 

我知道怎么做分裂。 但接下来我如何进行加入步骤呢? 我意识到我可以使用for循环来进行连接。 但有更好的方法吗? 我不能使用子字符串方法来执行连接步骤,因为我在thumb_之前有数据。

最后,请注意thumb_字符始终是_的第一个实例。

由于拇指之后的_始终是第一个实例,因此Substring应该与IndexOf一起完全可行。

 string newString = myString.Substring(myString.IndexOf("_") + 1); 

这应该从紧跟在_字符的第一个实例之后的字符开始的子字符串。

如果你想得到_第二个索引,这就是我的建议:

 int first = myString.IndexOf("_"); int second = mystring.Substring(first).IndexOf("_"); 

请参阅Jon Skeet对“第n次出现的字符串索引?” 这一问题的回答 。 支持这种方法。

如果您不喜欢indexOf,但希望加入:

 String.Join("_", "thumb_634735515600845357tchayat_november_200612.jpg" .Split('_') .Skip(1) .ToArray()) 

拆分和重新排列后,您可以使用Join方法。

 string new_value=String.Join("",your_array); 

你可以使用String.Join ,但实际上它仍然使用一个循环。

 String.Join("_", "thumb_634735515600845357tchayat_november_200612.jpg".Split('_').Skip(1).ToArray()); 

userRoles是字符串列表

string.Join(“,”,userRoles.ToArray());

使用正则表达式非常有用。

 using System.Text.RegularExpressions; ... string itemName = "thumb_634735515600845357tchayat_november_200612.jpg"; itemName = Regex.Match(itemName, @"(?<=(_)).*$").Value; ... 

“(?<=(_))”看起来在第一个“_”后面。 把它想象成一个起点。 “。* $”获取从起点到终点的所有内容。 “$”标志着该行的结束。