8

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

thumb_634735515600845357tchayat_november_200612.jpg

我想要做的是首先将此字符串拆分_为. 然后在位置 1 到 n 处获取生成的标记并加入它们。

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

634735515600845357tchayat_november_200612.jpg

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

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

4

6 回答 6

11

由于_拇指后始终是第一个实例Substring,因此与IndexOf.

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

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

如果您希望获得 的第二个索引_,我建议您这样做:

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

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

于 2012-06-14T01:58:21.970 回答
7

如果您不喜欢 indexOf,但想要加入:

String.Join("_",
   "thumb_634735515600845357tchayat_november_200612.jpg"
   .Split('_')
   .Skip(1)
   .ToArray())
于 2012-06-14T01:58:36.783 回答
2

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

string new_value=String.Join("",your_array);
于 2012-06-14T02:01:21.507 回答
0

您可以使用String.Join,但实际上,它仍然使用内部循环。

String.Join("_", "thumb_634735515600845357tchayat_november_200612.jpg".Split('_').Skip(1).ToArray());
于 2012-06-14T02:03:28.730 回答
0

UserRoles 是字符串列表:

string.Join(",", userRoles.ToArray());
于 2014-10-06T07:21:44.833 回答
0

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

使用正则表达式会很有帮助。

using System.Text.RegularExpressions;

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

"(?<=(_))" 看起来在第一个 "_" 后面。将其视为一个起点。".*$" 获取从起点到行尾的所有内容。“$” 标记行尾。

于 2015-08-28T19:03:16.657 回答