Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разобрать строку, как? 
:(
    Опции темы
Elfet
Дата 26.8.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



У меня есть строка вида: числоxбуква числоxбуква Ну и мне нужно получить все эти числа и буквы smile Мне сказали что это легко делается через регулярные выражения smile но я не знаю как smile
smile smile
Добавлено @ 13:35
ЗЫ: Это в Общие вопросы по .NET


--------------------
PM MAIL WWW Skype   Вверх
Competitor
Дата 26.8.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: -1
Всего: -1



ну а что сели просто пробежаться по массиву, сопоставляя каждый символ строки с зараннее уготованным массивом цифр.
PM MAIL WWW   Вверх
nerezus
Дата 26.8.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



хм, чтобы не заводить новую тему: как в строке сделать замену участка? =)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Spawn™Production®
Дата 26.8.2005, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: 1
Всего: 12



nerezus, хм, Replace ("Исходный текст", "что найти", "на что заменить")
Например Replace("123", "1", "4") = "423"


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Bounz
Дата 26.8.2005, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.1.2005

Репутация: нет
Всего: нет



Elfet
Вот тебе пример:
Код

  Regex rx = new Regex(@"\w\d\w");
  string mText = "";
  MatchCollection strSplit = rx.Matches("a1b c2d e3f");
  foreach (Match s in strSplit)
        mText += s.Value + "\n";
  MessageBox.Show(mText);

Используй пространство имен System.Text.RegularExpressions
PM MAIL ICQ   Вверх
Zdvig
Дата 19.9.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.5.2005

Репутация: 1
Всего: 1



Думаю вопрос похожий, чтобы не создавать новую тему.

Есть строка: "12345 тут текст произвольной длины"

Как прочитать все что правее "12345"?
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Bounz
Дата 19.9.2005, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.1.2005

Репутация: нет
Всего: нет



Цитата
Есть строка: "12345 тут текст произвольной длины"

Как прочитать все что правее "12345"?

Если ты точно знаешь что у тебя есть строка "12345", то ты можешь сделать так:
Код

string s = "12345 тут текст произвольной длины";
string news = s.Replace("12345 ", "");


PM MAIL ICQ   Вверх
Дрон
Дата 19.9.2005, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Zdvig
Ну либо так как сказал Bounz,
либо более общая задача: набор_цифр пробелы произвольный_текст

Вот рег. выражение:
Код

            string s = "126572121      deedijdeijdei cnjwnoe dwendwen";
            Regex reg = new Regex(@"\d+\s+(.*)");
            Match m = reg.Match(s);
            string text = null;
            if(m.Success)
                text = m.Groups[1].Captures[0].Value;

Добавлено @ 18:54
Регулярные выражения -- крутая штука smile

В данном примере:
\d+ означает одна или большее количество цифр
\s+ означает один или большее количество пробелов (знаков табуляции и др. непечатных символов)
.* означает любое количество любых символов

Это сообщение отредактировал(а) Дрон - 19.9.2005, 19:04


--------------------
Да. Именно так.
PM   Вверх
Zdvig
Дата 19.9.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.5.2005

Репутация: 1
Всего: 1



Дрон
Спасибо!!

Это сообщение отредактировал(а) Zdvig - 19.9.2005, 20:19
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
lioness
Дата 24.8.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 27.7.2006

Репутация: нет
Всего: нет



Ну ПОЧЕМУ  smile  при вводе у меня НЕ отсеиваются мне НЕнужные символы !!
Жрёть все, что ни дашь.

Можно: буквы и цифры, пробелы. Знаки тоже можно, но кроме тех, которые я задала, как неразрешенные.

Код

              set
                {
                    Regex rx = new Regex(@"\w*\s*[^!§$%&/()=?#'+*]");
                    if (rx.IsMatch(value))   ppname = value;
                    else ErrMess = value +" is not a currency value";
                 }


Самый распростой пример !  Может нужно другой конструктор взять???
PM MAIL   Вверх
ivashkanet
Дата 24.8.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(lioness @  24.8.2006,  11:02 Найти цитируемый пост)
@"\w*\s*[^!§$%&/()=?#'+*]"

lioness, имхо у тя что-то с самим регулярным выражением.
У тебя оно читается так:
любое количесво непробельных символов, потом любое количесво пробельных (белых-пробелов) символов, а потом один не "!§$%&/()=?#'+*" символ.
Поэтому он не найдет, например, такую строку: "$%"
P.S. А вообще напиши, что ты хочешь найти и какую строку проверяешь

Добавлено @ 11:16 
А хотя нет. Должен найти smile 
В общем: 
Цитата(ivashkanet @  24.8.2006,  11:14 Найти цитируемый пост)
какую строку проверяешь 

 smile 
PM MAIL WWW ICQ   Вверх
lioness
Дата 24.8.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 27.7.2006

Репутация: нет
Всего: нет



Вот, например: "Gn BW Kraftwerke AG Kernkraftwerk Philippsburg BRD012 KK-BWR"

Вобщем, любые буквы и цифры, знаки тоже могут быть. Я бы хотела НЕ принимать знаки очевидно ошибочные. 

А я задала только для трех знаков???  Но у меня сглатывает сейчас любое количество... И любые знаки ...

Это сообщение отредактировал(а) lioness - 24.8.2006, 11:30
PM MAIL   Вверх
ivashkanet
Дата 24.8.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



lioness, так она у тебя соответствует выражению, так как не содержит знаки 
Цитата(ivashkanet @  24.8.2006,  11:14 Найти цитируемый пост)
!§$%&/()=?#'+

А это, в принципе, у тебя единственное строгрое условие ("\w*\s*" строгим считаться не может)
PM MAIL WWW ICQ   Вверх
lioness
Дата 24.8.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 27.7.2006

Репутация: нет
Всего: нет



Не, строку я привела, как пример, что там ИМЕЕТ ПРАВО быть.

Так глотает он у меня  Л-Ю-Б-Ы-Е. В том числе и те, которые в квадратных скобках поставила  smile 

Вот так исправить попробовала 
Код

Regex rx = new Regex(@"([0-9A-Za-z]|[ÄäÖöÜüß]|\s)*");


Я думала, вообще запретила знаки воодить. Так он и тут все слопал. 

Это сообщение отредактировал(а) lioness - 24.8.2006, 11:53
PM MAIL   Вверх
mr.DUDA
Дата 24.8.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



FYI, для экспериментов с регулярными выражениями удобно пользоваться тулзами типа Regulator .NET или Regex Coach.


--------------------
user posted image
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.