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

Как найти только первое вхождение строки?

16.11.2014, 18:45. Показов 4099. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как сделать так, чтобы при смене регистра он брал только первое вхождение word(привет!) и находил его в input(ПеРгамент клеопатры Из египта отраВлЕн Токсином!) и так далее
П нашел 1 поставил пошел дальше на Р, а не каждую подходяющую букву менял

ПеРгамент клеопатры Из египта отраВлЕн Токсином!
1010000000000000000010000000000001010010 0000001

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
31
32
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace ConsoleApplication4
{
    class Program
    {
        public static char[] word = File.ReadAllText(@"D:\word.txt").ToCharArray();
        public static string input = File.ReadAllText(@"D:\input.txt");
       
        static void Main(string[] args)
        {
            Console.WriteLine("Шифруемое слово: " + new string(word) + "\n");
            input = input.Replace(' ', '_');
            input = input.ToLower();
            Console.WriteLine("Криптограмма: " + input + "\n");
            Console.WriteLine("Ключ криптограммы: ");
            Crypt();
            Console.ReadLine();
        }
 
        public static void Crypt()
        {
            char[] ca = input.ToCharArray();
            char outpur;
            for (int i = 0; i < ca.Length; i++)
            {
                outpur = word.Contains(ca[i]) ? '1' : '0';
                Console.Write(outpur);
            }
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2014, 18:45
Ответы с готовыми решениями:

Для всех слов напечатать только первое вхождение буквы
Дано строку символов которая состоит из отдельных слов, отсоединенные пробелом. Напечатать все слова,но оставить только первые вхождения...

Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2. Ответ написать в виде кода на си шарп

Заменить в строке S первое вхождение строки S1 на строку S2
Помогите решить задачу: Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2.

10
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
16.11.2014, 19:02
Только первое вхождение строки
C#
1
IndexOf
0
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
16.11.2014, 19:38  [ТС]
Metall_Version, с индексом такая же проблема
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
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        public static string word = File.ReadAllText(@"D:\word.txt"); 
        public static string input = File.ReadAllText(@"D:\input.txt");
 
        static void Main(string[] args)
        {
            Console.WriteLine("Шифруемое слово: " + word + "\n");
            Console.WriteLine("Криптограмма: " + input + "\n");
            input = input.Replace(' ', '_').ToLower();
            Console.WriteLine("Ключ криптограммы: ");
            Crypt();
            Console.ReadLine();
        }
 
        public static void Crypt()
        {
            for (int i = 0; i < input.Length; i++)
            {
                if (word.IndexOf(input[i]) >= 0) 
                { 
                    Console.Write("1"); 
                } 
                else 
                { 
                    Console.Write("0"); 
                }
            }
        }
    }
}
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
16.11.2014, 21:24
Цитата Сообщение от temasey Посмотреть сообщение
с индексом такая же проблема
для начала нужно хотябы описать что должно в программе происходить.. тут экстрасенсов нету
ибо я не пойму при чем тут вхождение строки к этому " 1010000000000000000010000000000001010010 0000001"
0
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
16.11.2014, 21:28  [ТС]
Metall_Version, это программа-реализация решетки Кардано, шифруется слово "привет!" в тексте ПеРгамент клеопатры Из египта отраВлЕн Токсином!. В тексте я подсветил буквы верхним регистром, которые должны выпасть как 1, остальные 0.
получается такой ключ криптограммы:
1010000000000000000010000000000001010010 0000001
Шифр проводится без поворотов
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
16.11.2014, 22:24
то есть тебе нужно найти каждое первое вхождение буквы (относительно текущей буквы из текста) из слова (привет) в тексте найти и обозначить как "1"
0
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
16.11.2014, 22:27  [ТС]
Metall_Version, да, только единожды
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
16.11.2014, 22:40
Лучший ответ Сообщение было отмечено temasey как решение

Решение

temasey, вот

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
31
32
33
34
35
        static void Main(string[] args)
        {
            string word = "привет";
            string input = "ПеРгамент клеопатры Из египта отраВлЕн Токсином!";
 
            Console.WriteLine("Шифруемое слово: " + word + "\n");
            Console.WriteLine("Криптограмма: " + input + "\n");
 
            input = input.ToLower();
            word = word.ToLower();
 
            Console.WriteLine("Ключ криптограммы: " +  Crypt(word,input));
           
            Console.ReadLine();
        }
 
        static string Crypt(string word, string input)
        {
            var sb = new StringBuilder();
            for (int i = 0,j=0; i < word.Length; i++)
            {
                for (; j < input.Length; j++)
                {
                    if (word[i] == input[j])
                    {
                        sb.Append("1");
                        j++;
                        break;
                    }
 
                    sb.Append("0");
                }
            }
            return sb.ToString();
        }
Добавлено через 7 минут
небольшое изменение - последние нули не считало
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
        static string Crypt(string word, string input)
        {
            var sb = new StringBuilder();
            int i = 0, j = 0;
 
            for (; i < word.Length; i++)
            {
                for (; j < input.Length; j++)
                {
                    if (word[i] == input[j])
                    {
                        sb.Append("1");
                        j++;
                        break;
                    }
 
                    sb.Append("0");
                }
            }
            for (; j < input.Length; j++)
                sb.Append("0");
 
            return sb.ToString();
        }
0
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
16.11.2014, 23:03  [ТС]
Metall_Version, а как это дальше использовать? он просто выводит посимвольно 0 и 1, не в строку не в массив, а как это можно дешифровать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 
        public static void DeCrypt()
        {
            // прямой обход решетки
            for (int i = 0; i < строка.Length; i++)
            {
                if (Convert.ToString(строка[i]) == "1")
                {
                    Console.Write(строка[i]);
                }
            }
            Console.WriteLine("");
        }
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
17.11.2014, 00:28
дальше выводим все символы из input , индексы которых совпадают в нашем шифрованном слове с "1"

C#
1
2
3
4
5
6
7
           var sb = new StringBuilder();
            for (int i = 0; i < crypt.Length; i++)
            {
                if (crypt[i] == '1')
                     sb.Append(input[i]);
            }
            Console.WriteLine(sb);
0
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
18.11.2014, 14:07  [ТС]
Metall_Version, а что за crypt такой?

Добавлено через 21 час 41 минуту
Metall_Version, так? crypt это же метод? как расшифровать то
C#
1
2
3
4
5
6
7
8
9
10
11
        public static void DeCrypt()
        {
            // прямой обход решетки
            var sb = new StringBuilder();
            for (int i = 0; i < sb.Length; i++)
            {
                if (sb[i] == '1')
                    sb.Append(input[i]);
            }
            Console.WriteLine(sb);
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2014, 14:07
Помогаю со студенческими работами здесь

Заменить в строке первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2. помогите

Строки (что бы программа выделяла не первое вхождение слова а все)
Ребят Запарился уже не могу догнать как сделать чт бы программа выделяла не первое вхождение слова а все что есть! или хотябы была...

Как проверить на однократное вхождение точки в строку, причем только в конце строки?
Не работает Regex regex = new Regex(@&quot;\.{1}&quot;); if (regex.IsMatch(Text)) { ...

Удаление слова из строки - удаляется только первое вхождение
люди, помогите доработать программу. Она удаляет только первое вхождение слова в строку а дальше не хочет,а нужно удалять каждое...

Как найти первое вхождение строки и вернуть всю строку(в которой искали) до конца с места вхождения?
Учу С++ по книге Страуструпа, есть такое задание в конце главы : &quot;Напишите функцию char* findx(const char* s, const char* х) , нахо* ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru