Функция подстроки не работает на .net cf? - PullRequest
0 голосов
/ 15 апреля 2011

net CF

Мне нужно использовать подстроку для захвата середины строки.

txtpart.Text = "ab12345678cde";
string item = txtpart.Text.Substring(2,8);

Какой результат должен быть 12345678.

Но он всегда выбрасываетthis Exception

System.ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений.

Есть ли какая-либо функция, кроме подстроки?

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

Ваш код выглядит отлично.

Проверьте этот блог от Дэниела Мота о проблеме подстрок в .net cf

Ошибка подстроки Moth в .net cf

С наилучшими пожеланиями

1 голос
/ 15 апреля 2011

Ваш пример должен вернуть 2345678c, а не 12345678, но это не имеет значения. Ваш код действителен и не должен выдавать ошибку. Вы передаете ab12345678cde только для примера? Можете ли вы показать нам, что действительно передается при возникновении ошибки?

Вы можете посмотреть здесь, как выполняется ваш код:

http://ideone.com/jufd3

Если ваша длина слишком велика, я думаю, вы получите ошибку, но не ту, которую вы видели.

0 голосов
/ 12 декабря 2015

Я знаю, что это старый вопрос, но это может кому-то помочь ...

Вот простая функция, которую вы можете использовать, чтобы «получить» в середине любой строки:

public static string getBetween(string strSource, string strStart, string strEnd)
    {
        int Start, End;
        if (strSource.Contains(strStart) && strSource.Contains(strEnd))
        {
            Start = strSource.IndexOf(strStart, 0) + strStart.Length;
            End = strSource.IndexOf(strEnd, Start);
            return strSource.Substring(Start, End - Start);
        }
        else
        {
            return "";
        }
    }

и для его использования звоните:

string mySelectedText = getBetween(txtpart.Text, "b", "c");
Debug.WriteLine(mySelectedText);

Результат будет 12345678

Надеюсь, это поможет. Привет

...