Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI
Войти
Регистрация
Восстановить пароль
 
katafot
0 / 0 / 3
Регистрация: 16.07.2016
Сообщений: 47
#1

Ввести строку и заменить все числа на знак "*" - C++/CLI

24.10.2016, 21:37. Просмотров 273. Ответов 1
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
 
using namespace System;
 
int main(array<System::String ^> ^args)
{
    Console::WriteLine("Ввести строку:");
    String ^s = Console::ReadLine();
    for (int i = 0; i < s->Length; i++)
        if (s[i] == '1' || s[i] == '2' || s[i] == '3' || s[i] == '3' || s[i] == '5' || s[i] == '6' || s[i] == '7' || s[i] == '8' || s[i] == '9' || s[i] == '0')
        {
        ????
        }
    Console::WriteLine("\nРезультат:\n" + s);
    Console::ReadLine();
    return 0;
}
1)Как менять все числа а не только от 0 до 9 (if (s[i] == '1' || s[i] == '2' || s[i] == '3' || s[i] == '3' || s[i] == '5' || s[i] == '6' || s[i] == '7' || s[i] == '8' || s[i] == '9' || s[i] == '0'))
2) Не знаю что писать после условия.

З.Ы. Спасибо заранее за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2016, 21:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ввести строку и заменить все числа на знак "*" (C++/CLI):

Заменить все символы, которые не включены в список "разрешенных"
Подскажите как проще в ASP.NET (VB.NET) заменить все символы, которые не...

Как выполнить строку "2+2*2" и результат запихнуть в переменную?
Как выполнить строку '2+2*2' и результат запихнуть в переменную?

Regular Expressions - удалить все "." в имени файла, кроме последней
Требуется в веб-приложении проверить правильность ввода имени файла и если...

Библиотека fftw, Error C2228: left of ".real",".imag" must have struct/class/union
#include &quot;stdafx.h&quot; #include &lt;fftw3.h&gt; #include &lt;math.h&gt; #include &lt;complex&gt;...

После запуска среды выскакивает окошечко с ошибкой "Unknown error" или "Неизвестная ошибка"
Доброго времени суток. Возникла проблема. После запуска среды выскакивает...

Бинарный "+": не найден оператор, принимающий правый операнд типа "LPCWSTR"
c++ бинарный &quot;+&quot;: не найден оператор, принимающий правый операнд типа &quot;LPCWSTR&quot;...

1
OwenGlendower
Супер-модератор
Эксперт .NET
8755 / 7759 / 3320
Регистрация: 17.03.2014
Сообщений: 15,260
Записей в блоге: 1
25.10.2016, 14:33 #2
katafot, строки в .NET нельзя изменять поэтому придется использовать временную строку или класс System::Text::StringBuilder
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
String^ tmp = "";
for (int i = 0; i < s->Length; i++)
{
    if (s[i] == '1' || s[i] == '2' || s[i] == '3' || s[i] == '4' || s[i] == '5' || s[i] == '6' || s[i] == '7' || s[i] == '8' || s[i] == '9' || s[i] == '0')
    {
        tmp += "*";
    }
    else
    {
        tmp += s[i];
    }
}
s = tmp;
Вариант с использованием StringBuilder (более эффективное использование памяти)
C++
1
2
3
4
5
6
7
8
9
10
11
using namespace System::Text;
...
StringBuilder^ tmp = gcnew StringBuilder(s);
for (int i = 0; i < s->Length; i++)
{
    if (s[i] == '1' || s[i] == '2' || s[i] == '3' || s[i] == '4' || s[i] == '5' || s[i] == '6' || s[i] == '7' || s[i] == '8' || s[i] == '9' || s[i] == '0')
    {
        tmp[i] = '*';
    }
}
s = tmp->ToString();
Ну и наконец можно сделать замену с помощью регулярного выражения
C++
1
2
3
using namespace System::Text::RegularExpressions;
...
s = Regex::Replace(s, "\\d", "*");
Цитата Сообщение от katafot Посмотреть сообщение
Как менять все числа а не только от 0 до 9
Если имеется в виду что нужно заменить одно число или несколько расположенных подряд цифр на одну *, то реализуй этот алгоритм самостоятельно. Там всего-лишь нужно запоминать был ли предыдущий символ цифрой и действовать соответственно. Кстати проверку на цифру можно записать проще - if (Char::IsDigit(s[i]))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2016, 14:33
Привет! Вот еще темы с решениями:

No suitable constructor exists to convert from "System::String ^" to "std::basic_string"
Вот метод, которая я вызываю при нажатии кнопки в окне ПО, но дело в том, что...

помогите : невозможно преобразовать параметр 1 из "WORD" в "System::String ^"
Пишу программу напоминалку. В ней все почти крутится вокруг таймера: таймер,...

error C2440: =: невозможно преобразовать "System::String ^" в "char"
int discriminant; discriminant = Convert::ToInt16(b-&gt;Text); char...

Process::Start("IExplorer.exe", "www.yandex.ru");
Народ, всем привет! Я, нажатием кнопки пытаюсь запустить internet explorer,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru