Вы можете использовать регулярные выражения, например, так:
var s = System.Text.RegularExpressions.Regex.Matches(stringtomatch,@"(?<=-\s*)[0-9]+\b(?=\s*~)");
Регулярное выражение в основном ищет число. Затем он проверяет символы позади, ищет дополнительные пробелы и тире (-). затем он сопоставляет все числа, пока не встретит другой несловарный символ. он проверяет наличие необязательного пробела и затем требуемый ~ (не знаю, как это называется). Кроме того, он возвращает только номер (без пробелов и символов).
Так что в основном этот метод возвращает список совпадений. затем вы можете использовать его так:
for (int i = 0; i < s.Count; i++)
{
listBox1.Items.Add(s[i]);
}
EDIT:
опечатка в регулярном выражении и обновление цикла (по какой-то причине foreach не работает с MatchCollection).
вы можете попробовать запустить этот тестовый скрипт:
var stringtomatch = " asdjasdk jh kjh asd\n-\n123123\n~\nasdasd";
var s = System.Text.RegularExpressions.Regex.Matches(stringtomatch,@"(?<=-\s*)[0-9]+\b(?=\s*~)");
Console.WriteLine(stringtomatch);
for (int i = 0; i < s.Count; i++)
{
listBox1.Items.Add(s[i]);
}