В вашей попытке sql.IndexOf(" ")
будет соответствовать первому вхождению пробела, в вашем примере это индекс 5 (в Thank you
).
Вы должны посмотреть на первое вхождение нового строка после первое вхождение http
:
var startIndex = sql.IndexOf("http", StringComparison.Ordinal);
var endIndex = sql.IndexOf('\r', startIndex); // maybe '\n' or ' '
и Substring
второй аргумент - это длина, а не индекс, правильный код:
var url = sql.Substring(startIndex, endIndex - startIndex - 1);
Но самый чистый способ сделать это - использовать regexp :
// Assuming there is only one url and it fit alone on a single line.
var regex = new Regex(@"^http.*\r?$", RegexOptions.Multiline);
var match = regex.Match(s);
if (match.Success)
{
var url = match.Value;
}