Как указано Regex вариант, но так как это не самый читаемый стандарт я бы с чем-то более четкое и более прочные, такие как:
const char splitChar = '_';
String fileName = "20170123-100046_20170217154436_A20170217210502";
int valueIndexStart = fileName.IndexOf(splitChar);
int valueIndexEnd = fileName.LastIndexOf(splitChar);
if(valueIndexStart != -1 && valueIndexEnd != -1)
{
//increment so as to trip splitChar from result
valueIndexStart++;
valueIndexEnd = valueIndexEnd-valueIndexStart;
return fileName.Substring(valueIndexStart, valueIndexEnd);
}else{
//throw exception?
}
Конечно, вам необходимо рассмотреть, насколько стандартным является этот формат. Вы говорите, что средняя часть - это то, что вы ищете, всегда будет 3 части? Что произойдет, если вы найдете более или менее разделительные символы? Может ли этот персонаж быть в значении. Я оставлю это до вас о том, как обращаться с потенциальными ложными позитивами или негативами.
У этого всегда есть этот формат? –