![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| kinder999 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2007 Репутация: нет Всего: нет |
Доброго времени суток. Помогите пожалуйста составить регулярное выражение.
Задача: есть строка, например "fs-fd-324sg.5-hghghj.9-80g90" Мне необходимо получить из неё число, т.е. на выходе должно получиться: -324.598090 Пробывал такое:
из справки MSDN
получаю на выходе:
Т.е. он не удаляет повторный знаки "-", которые после первой позиции, а также повторные точки... Подскажите, пожалуйста, как можно модернизировать это шаблон, что бы он подходил к моей задаче... Заранее спасибо... |
||||||
|
|||||||
| Мурлыкатам_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Можно разбить задачу на более мелкие этапы:
1)
2) получается из твоего примера: -324.5.9-8090 проверяешь, есть ли у тебя минус в начале строки: bool isNegative = resultStr.StartsWith("-"); если тру, делаешь: убиваешь все минусы в строке Replace('-', ''); а затем добавляешь минус в начало. если фолс: Replace('-', ''); 3) получается -324.5.98090, теперь нам необходимо определить все точки: int firstDotPosition = resultStr.IndexOf('.'); // индекс оф берет ПЕРВУЮ позицию точки, после если -1 - значит точки нет, и все супер. Если нет: 3.1) удаляем все точки из строки resultStr = resultStr.Replace('.', ''); 3.2) вставляем нашу точку на нужное место: resultStr = resultStr.Insert(firstDotPosition, "."); 4) делаем парс значения: -324.598090 double result = double.Parse(resultStr); 5) наслаждаемся жизнью Гуру бы сделал все одним регексом, но это было бы достаточно тяжелое выражение и я никак не запомню синтаксис регексов Кстати альтернативно можно сделать так:
Должно че-то получится из этого Можно так же сделать зачистку входящей строки от чего угодно с помощью Regex.Replace(): http://msdn.microsoft.com/en-us/library/aa...v=VS.71%29.aspx Это сообщение отредактировал(а) Мурлыкатам_ - 21.10.2010, 16:20 |
||||||
|
|||||||
| kinder999 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2007 Репутация: нет Всего: нет |
Спасибо буду пробывать
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |