Вопрос по c#, string, join, split – Сначала разделите, а затем присоединитесь к подмножеству строки

4

У меня есть строка ввода следующим образом:

thumb_634735515600845357tchayat_november_200612.jpg

То, что я хочу сделать, это в первую очередьsplit эта строка_, А затем возьмите получившиеся токены в позициях с 1 по n иjoin их.

В частности, что касается моего примера ввода, вот мой желаемый результат. Как вы видете,thumb_ был удален из передней части строки:

634735515600845357tchayat_november_200612.jpg

Я знаю, как сделать раскол. Но тогда как мне выполнить следующий шаг соединения? Я понимаю, что я могу использоватьfor цикл, чтобы сделать соединение. Но есть ли лучший способ? Я не могу использовать подход подстроки для выполнения шага соединения, потому что у меня есть данные доthumb_.

Наконец, обратите внимание, что_ персонаж, который следуетthumb всегда первый случай_.

Ваш Ответ

6   ответов
0

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; отмечает конец строки.

5

String.Join("_",
   "thumb_634735515600845357tchayat_november_200612.jpg"
   .Split('_')
   .Skip(1)
   .ToArray())
+1: мне нравится, если IndexOf по какой-то причине недоступен. Это немного "болтливее" чем решение IndexOf, но очень хорошая альтернатива.
Спасибо, это помогло мне понять, что это должен быть Join.Split, а не Split.Join
на самом деле ты прав. это результат для этого, а не на самом деле, что я хочу DarthVader
Это не добавит _ в результат как 634735515600845357tchayatnovember200612.jpg
11

_ после большого пальца всегда первый экземпляр, тоSubstring должно быть совершенно жизнеспособным в сочетании сIndexOf.

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

Это должно взять подстроку, начинающуюся с символа, следующего сразу за первым экземпляром_ персонаж.

Если вы хотите получитьsecond индекс_вот что я рекомендую:

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

Увидетьэтот ответ отДжон Скит на вопрос& quot; Индекс n-го вхождения строки? & quot; за поддержку этого подхода.

0

String.Join, но на самом деле, он все еще использует цикл внутри.

String.Join("_", "thumb_634735515600845357tchayat_november_200612.jpg".Split('_').Skip(1).ToArray());
@DarthVader Вы имеете в виду, что есть еще_ до "большого пальца"?
почему у тебя 1 и 3? что если у тебя есть еще _? DarthVader
@DarthVader Да, вы правы. Следует использоватьSkip вместо. Я отредактирую свой ответ.
0

string.Join (& quot;, quot ;, userRoles.ToArray ());

2

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

Похожие вопросы