Вопрос по c#, string, join, split – Сначала разделите, а затем присоединитесь к подмножеству строки
У меня есть строка ввода следующим образом:
thumb_634735515600845357tchayat_november_200612.jpg
То, что я хочу сделать, это в первую очередьsplit эта строка_
, А затем возьмите получившиеся токены в позициях с 1 по n иjoin их.
В частности, что касается моего примера ввода, вот мой желаемый результат. Как вы видете,thumb_
был удален из передней части строки:
634735515600845357tchayat_november_200612.jpg
Я знаю, как сделать раскол. Но тогда как мне выполнить следующий шаг соединения? Я понимаю, что я могу использоватьfor
цикл, чтобы сделать соединение. Но есть ли лучший способ? Я не могу использовать подход подстроки для выполнения шага соединения, потому что у меня есть данные доthumb_
.
Наконец, обратите внимание, что_
персонаж, который следуетthumb
всегда первый случай_
.
using System.Text.RegularExpressions;
...
string itemName = "thumb_634735515600845357tchayat_november_200612.jpg";
itemName = Regex.Match(itemName, @"(?<=(_)).*$").Value;
...
& Quot; (? & Lt; = (_)) & quot; смотрит за первым & quot; _ & quot ;. Думайте об этом как о отправной точке. & Quot;. * $ & Quot; получает все от начальной точки до конца линии. & Quot; $ & Quot; отмечает конец строки.
String.Join("_",
"thumb_634735515600845357tchayat_november_200612.jpg"
.Split('_')
.Skip(1)
.ToArray())
_
после большого пальца всегда первый экземпляр, тоSubstring
должно быть совершенно жизнеспособным в сочетании сIndexOf
.
string newString = myString.Substring(myString.IndexOf("_") + 1);
Это должно взять подстроку, начинающуюся с символа, следующего сразу за первым экземпляром_
персонаж.
Если вы хотите получитьsecond индекс_
вот что я рекомендую:
int first = myString.IndexOf("_");
int second = mystring.Substring(first).IndexOf("_");
Увидетьэтот ответ отДжон Скит на вопрос& quot; Индекс n-го вхождения строки? & quot; за поддержку этого подхода.
String.Join
, но на самом деле, он все еще использует цикл внутри.
String.Join("_", "thumb_634735515600845357tchayat_november_200612.jpg".Split('_').Skip(1).ToArray());