функция подстроки в исключении броска c # - PullRequest
0 голосов
/ 28 февраля 2012

Моя строка delete filename (имя файла), которую я бы дал во время выполнения этой строки str3 Я хочу только имя файла (независимо от его длины).Вот мой код:

int len = str3.Length;
string d = str3.Substring(6,len-1);// 6 for delete index and to get rest word is len -1
Console.Write(d);

Но это бросает мне исключение.

Ответы [ 4 ]

4 голосов
/ 28 февраля 2012

Substring ожидает длину остальной части строки (т. Е. Количество символов для захвата).Попробуйте это:

string d = str3.Substring(6, len-7);

РЕДАКТИРОВАТЬ - Как CodeCaster напомнил мне, если вы захватываете весь остаток строки, вам не нужно включать длину.

string d = str3.Substring( 6 );
0 голосов
/ 28 февраля 2012

Если вам нужно только имя файла, просто используйте метод GetFileName класса Path в пространстве имен System.IO:

string d = System.IO.Path.GetFileName(str3);
0 голосов
/ 28 февраля 2012

Сделайте это

  str3.Substring(6,(len-6));

Второй аргумент - это количество символов в подстроке, поэтому, если вы начинаете с индекса 6 и хотите получить все, что после этой точки, вы вычли бы startindex из длины.

0 голосов
/ 28 февраля 2012

Поскольку вы не говорите нам, что является исключением, я собираюсь предположить, что оно от длины меньше начальной точки подстроки.Перед тем, как сделать

str3.Substring(6,len-6)

, вы должны сначала проверить

, если (str3.Length> 6)

, чтобы оно выглядело как

int len=str3.Length;
if (str3.Length > 6)
    string d = str3.Substring(6,len-6);
Console.Write(d);

Такжеобратите внимание, что это len-6, поскольку это относится к количеству, а не к последнему индексу.Второй параметр для String.Substring также не нужен.По умолчанию он идет до конца строки, так как здесь вы можете прочитать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...