Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 59

Извлечение подстроки из строки без использования Substring

06.12.2020, 20:13. Показов 942. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Написал маленькую программу, которая извлекает подстроку из строки, в которой имеется статический метод, не возвращающий результат.
Мой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Program
    {
 
        static void GetText(string t, int a, int b)
        {   
            int count = 0;
            string text2 = "";
            for (int i = a; i < t.Length; i++)
            {
                if (count != b)
                {
                    count++;
                    text2 += t;
                    Console.Write(text2[i]);
                }
            }
        }
        static void Main(string[] args)
        {
            string text = "В лесу родилась елочка";
            GetText(text, 0, 5);
            Console.ReadKey();
 
        }
    }
А вот реализовал похожую программу, но уже с методом, который возвращает результат
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Program
    {
 
        static string GetText(string t, int a, int b)
        {   
            int count = 0;
            string text2 = "";
            for (int i = a; i < t.Length; i++)
            {
                if (count != b)
                {
                    count++;
 
                    text2 += t[i];
                    
                    
                }
            }
            return text2;
        }
        static void Main(string[] args)
        {
            string text = "В лесу родилась елочка";
            string text2 = "";
            text2 = GetText(text, 0, 5);
            Console.Write(text2);
            Console.ReadKey();
 
        }
    }
Правильно ли я вернул результат в данном коде(второй программы)? И правильно ли я извлек подстроку из строки?(Substring использовать нельзя)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2020, 20:13
Ответы с готовыми решениями:

Извлечение подстроки из строки (без использования библиотек функции)
Извлечение подстроки из строки (без использования библиотек функций). Помогите чем кто может, заранее спасибо:)

Извлечение данных из БД без использования элемента DataGrid
Всем доброго времени суток. Пишу веб-приложение с использованием SilverLight 4 (бизнес-приложение). Столкнулся с следующей задачей:...

Извлечение квадратного корня без использования функции
Всем привет. У меня возник вопрос. Можно ли извлечь корень из числа без функции Math.Sqrt(double);? Знаю, что можно, но как?

4
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
06.12.2020, 21:30
Цитата Сообщение от Vladimirkz Посмотреть сообщение
Правильно ли я
Что означает третий параметр b?
Длину подстроки? И индекс последнего символа подстроки?

Добавлено через 41 секунду
Цитата Сообщение от Vladimirkz Посмотреть сообщение
Правильно ли я вернул результат в данном коде(второй программы)?
И правильно ли я извлек подстроку из строки?(Substring использовать нельзя)
Результат на консоли верный получается?
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 59
07.12.2020, 13:32  [ТС]
параметр a отвечает с какой позиции(индекса) берется подстрока, параметр b отвечает за длину(сколько символов нужно извлечь)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
07.12.2020, 13:42
Цитата Сообщение от Vladimirkz Посмотреть сообщение
параметр b отвечает за длину(сколько символов нужно извлечь)
Тогда так наверное:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        static void GetTextConsole(string t, int a, int b)
        {   
            for (int i = a; i < a+b; i++)
               Console.Write(t[i]);
            Console.WriteLine();
        }
        static string GetText(string t, int a, int b)
        {  
            var result = Enumerable.Empty<char>();
            for (int i = a; i < a+b; i++)
               result = result.Append(t[i]);
            return string.Concat(result);
        }
1
Пора на C++?
 Аватар для TrickyBestia
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275
07.12.2020, 13:45
Vladimirkz,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static class StringExtensions
{
    public static string MySubstring(this string source, int startIndex, int length)
    {
        if (source.Length < startIndex + length)
            throw new ArgumentOutOfRangeException();
 
        char[] substringChars = new char[length];
        for (int i = 0; i < length; i++)
            substringChars[i] = source[startIndex + i];
        return new string(substringChars);
    }
    public static string MySubstring(this string source, int startIndex)
    {
        return source.MySubstring(startIndex, source.Length - startIndex);
    }
}
Если будет что-то с производительностью, можете посмотреть в сторону unsafe кода и читать символы строки напрямую.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2020, 13:45
Помогаю со студенческими работами здесь

Как разделить строку на подстроки, без использования функции Split
Подскажите, как разделить строку на подстроки, без использования метода Split. Есть идеи что пробелы отслеживать с помощью String.IndexOf...

Извлечение из строки цифр с целью дальнейшего их использования как переменных.
Доброго времени суток. Возникла задача оптимизации расчетов, а так как в программирование я вообще не понимаю, то прошу у вас помощи. ...

Написать программу,которая удаляет каждое второе вхождение подстроки(без использования pos,posex,del и т.д,кроме length)
Лабораторная работа: Написать программу,удаляющую каждое второе вхождение заданной подстроки,не используя стандартных функций работы со...

Разделение строки на подстроки без разделителей...
Задача: Есть некая строка, состоящая из символов. Вопрос, как разделить строку по 66 символов в каждой? Причем длинна строки не обязательна...

Разделение строки на подстроки без особого разделителя
Чтобы понять вопрос, я приведу вот такой пример: допустим есть: string T = &quot;вася;петя;саня;&quot;; я знаю, что это можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru