Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++/CLI

Войти
Регистрация
Восстановить пароль
 
katafot
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 47
#1

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

24.10.2016, 21:37. Просмотров 258. Ответов 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):

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

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

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

Библиотека fftw, Error C2228: left of ".real",".imag" must have struct/class/union - C++/CLI
#include &quot;stdafx.h&quot; #include &lt;fftw3.h&gt; #include &lt;math.h&gt; #include &lt;complex&gt; using namespace System; static void one(String^...

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

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

1
OwenGlendower
Модератор
Эксперт .NET
7949 / 6918 / 2570
Регистрация: 17.03.2014
Сообщений: 13,547
Записей в блоге: 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
Привет! Вот еще темы с ответами:

Бинарный "+": не найден оператор, принимающий правый операнд типа "LPCWSTR" - C++/CLI
c++ бинарный &quot;+&quot;: не найден оператор, принимающий правый операнд типа &quot;LPCWSTR&quot; LPCWSTR sdw = &quot;blablabla&quot;; String ^str=...

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

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

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


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

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

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