С# String Splitting - Без конечного разделителя

На мой первоначальный вопрос вчера был дан ответ о том, как отделить определенные символы от строки, а затем удалить то, что было между этими двумя символами.

Я говорил об удалении из строки вроде этого...

lg-109-1.ea-091-2.hd-180-1.hr-220-1

Я не понимал, что иногда мои персонажи я хотел разделить (в этом случае это было все между hd и. и hr и.)

Но вы видите, что hr нет ., поэтому он не удаляется

Это код im, использующий...

public static string RemoveB(string s) {
 s = Regex.Replace(s, @"hr.*?\.", "");
 s = Regex.Replace(s, @"hd.*?\.", "");
 return s;
}

Кто-нибудь знает, как проверить, есть ли после hr есть., а если нет, то просто удалите его?

3 ответа

Вы можете сделать

Regex.Replace(s, @"(hr|hd).*?(\.|$)", "");

$ изображает конец строки


Попробуйте использовать (\.|$) вместо \., чтобы соответствовать либо ., либо концу строки. Или, если вы знаете, что hr всегда является последней записью, вы можете просто использовать $ вместо \., чтобы всегда совпадать с концом строки.


public static string RemoveB(string s) {
 s = s.Replace("hr.","$");
 s = s.Replace("hr","");
 s = s.Replace("$","hr.");
 return s;
}

licensed under cc by-sa 3.0 with attribution.