9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 148
1

Поиск определенного слова в строке и замена определенного символа после этого слова

15.07.2011, 03:20. Показов 9337. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Представим что у нас есть следующая строка:
"Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде 1 мощного удара по яйцам."

Требуется вторую цифру 1 заменить на 2. Это можно сделать следующим образом:
C#
1
2
string Text = "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде 1 мощного удара по яйцам.";
Text.Replace("1", "2");
но тут возникает загвоздка, у нас в начале строки есть цифра 1 (в десятке) и выходит что заменяется и она. А надо заменить только вторую единицу пропустив при этом первую. Каким образом это можно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2011, 03:20
Ответы с готовыми решениями:

Считать из файла от определенного символа(слова) до определенного символа(слова)
Считываем текст из файла. Допустим от слова "Qwerty" до слова "Uiop". Примерно догадываюсь как это...

Вставка символа после определенного слова в текстбоксе
нужно вставить после 6-ого символа в текстбоксе (text1.text) букву 'а', каким способом можно...

Извлечение данных из txt после определенного слова или символа
Здрасте,нужно скопировать из 1.txt и сохранить определенное значение. Пример текста:...

Поиск определённого слова в каждой строке текстового файла
Здравствуйте. Есть вот такой код для поиска определенного слова в строке взятой из файла: @echo...

5
7 / 7 / 2
Регистрация: 04.11.2009
Сообщений: 35
15.07.2011, 04:24 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
List<int> temp = new List<int>();
            char[] a;
            string Text = "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде 1 мощного удара по яйцам.";
            for (int i = 0; i < Text.Length; i++)
            {
               if (Text[i] == '1' )
               if (Text[i - 1] == ' ' & Text[i + 1] == ' ')
                {
                    temp.Add(i);
                }
            }
            a = Text.ToCharArray();
            foreach(int t in temp)
            {
                a[t] = '2';
            }
            Text = string.Empty;
            for (int i = 0; i < a.Length; ++i) 
            {
                Text += a[i];
            }
0
9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 148
15.07.2011, 06:02  [ТС] 3
Цитата Сообщение от alaron Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
List<int> temp = new List<int>();
            char[] a;
            string Text = "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде 1 мощного удара по яйцам.";
            for (int i = 0; i < Text.Length; i++)
            {
               if (Text[i] == '1' )
               if (Text[i - 1] == ' ' & Text[i + 1] == ' ')
                {
                    temp.Add(i);
                }
            }
            a = Text.ToCharArray();
            foreach(int t in temp)
            {
                a[t] = '2';
            }
            Text = string.Empty;
            for (int i = 0; i < a.Length; ++i) 
            {
                Text += a[i];
            }
Спасибо конечно, но есть одно но:
стоит удалить хотябы один пробел около единицы и цифра не меняется...нельзя ли сделать так чтобы в любом тексте работал поиск и замена как я описал выше??
0
2 / 2 / 0
Регистрация: 01.07.2011
Сообщений: 29
15.07.2011, 06:16 4
Упс, извиняюсь. Это вам не поможет. Ниже можно не читать.

Ну, можно сделать вот так...
C#
1
2
3
4
5
6
7
8
9
10
11
12
StringBuilder builder = new StringBuilder();
            string Text = "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде     1 мощного удара по яйцам.";
            string[] temp = Text.Split(' ');
            for (int i = 0; i < temp.Length; i++)
            {
                if (temp[i] == "1")
                {
                    temp[i] = temp[i].Replace("1","2");
                }
                builder.Append(temp[i] + " ");
            }
            Text = builder.ToString();
0
9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 148
15.07.2011, 06:24  [ТС] 5
хм..а че у вас такие большие способы замены??..
я ща помозговал и подумал что все можно упростить донельзя:
C#
1
2
string Text = "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде     1 мощного удара по яйцам.";
Text = Text.Replace(" 1 ", " 2 ");
и зачем вы столько много писали...
0
9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 148
15.07.2011, 07:23  [ТС] 6
Цитата Сообщение от change Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
          string Text = "1. Дядя Петя 10 раз ударил дядю Васю10, но дядя 21Вася оказался не тру18сом и дал сдачи в виде 1 мощного удара по яйцам1.";
          char []  text = (" " + Text + " ").ToArray();
            for (int i = 1; i < text.Length - 1; i++)
            {
                if (text[i] == '1' && !Char.IsDigit(text[i + 1]) && !Char.IsDigit(text[i - 1]))
                    text[i] = '2';
            }
 
           
            Text = string.Join("", text).Trim();
Добавлено через 1 минуту
Japanese, ты же сам говорил, что надо учесть вариант, когда перед единицей не будет пробела.
я не это имел ввиду..я говорил про то чтобы в любом тексте можно было изменить указанный символ...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2011, 07:23
Помогаю со студенческими работами здесь

Поиск определенного слова и удаление строк после него
Здравствуйте. Есть файл с таблицей. Необходимо найти определенное слово, удалить(очистить) строку...

Добавление заданной записи после определённого слова в указанной строке
Здравствуйте! Имеется файл &quot;variable.php&quot; с таким содержимым: &lt;? $abracadabra = ; ?&gt; ...

C# C++ Задача поиск определенного символа в строке, запись того что после него в дргую строку
Вот пошагово: 1)Создать файл из символов, последний символ *(маркер) 2)После маркера записать...

Замена определенного символа в строке
Добрый день! Задача такая: есть строка вида &quot;00000001&quot; Если первые два символа &quot;00&quot;, то заменить...

Взять в скобки слова, начинающиеся с определенного символа
Задача такая: вводится предложение. Взять в скобки все слова, начинающиеся с того же символа, что и...

Поиск определённого по числу символа, в строке
Как с помощью jquery найти, например пятый пробел в строке, и заменить его на число 1 допустим....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru