首先拆分,然后连接字符串的子集

本文关键字:字符串 子集 连接 然后 拆分 | 更新日期: 2023-09-27 18:37:11

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

thumb_634735515600845357tchayat_november_200612.jpg

我想做的是先将这个字符串_ 拆分。然后在位置 1 到 n 处获取生成的令牌并加入它们。

具体来说,关于我的示例输入,这是我想要的输出。如您所见,thumb_已从字符串的前面删除:

634735515600845357tchayat_november_200612.jpg

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

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

首先拆分,然后连接字符串的子集

由于拇指后面的_始终是第一个实例,因此SubstringIndexOf结合使用应该是完全可行的。

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());

原始帖子发表于 2015 年 8 月 31 日。我唯一更改的是标记语法,因为原始语法是错误的。

使用正则表达式可能非常有帮助。

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

"(?<=(_))"位于第一个"_"后面。把它当作一个起点。".*$"获取从起点到行尾的所有内容。"$"标记行尾。