| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Использование только определённых символов |
| Автор: N1ko 15.6.2009, 22:41 |
| Если у меня строка содержит символы русского английского алфавита и цифры, делать то то... Если нет, вызвать message box с сообщением и ввести символы заново. Как это реализовать попроще в c#? Или прийдётся ввести в масив все нужные мне символы и буквы, а потом сверять их наличие в нужной мне строке? |
| Автор: Grok 16.6.2009, 00:53 | ||||
что-то вроде этого:
только если strInput будет считываться с файла, то для конструктора StreamReader нужно будет указать соответсвенную кодировку, чтобы нормально работало с кирилицей, например:
|
| Автор: N1ko 19.6.2009, 01:45 |
| Пробую использовать regex, но ничего не получается. Я хочу проверить строку на наличие исключительно цифр или букв. То есть если в строке будут символы типо запятой. точек и тп, строка буде не верной. А у меня сейчас програма проверяет строку на наличие указаных мной символов, но ей пофиг есть ли там пунктуационные знаки и тп. Как это записать? Через оператор ^ будет глуповато перечислять все ненужные мне символы. |
| Автор: diadiavova 19.6.2009, 06:51 |
| Цифры обозначаются так \d, буквы так [\w-[\d]] |
| Автор: N1ko 19.6.2009, 12:26 |
| Так тоже пробовал. Но если в строку попадает какой нибуть пунктуационный знак и в тоже время в ней есть буквы и цифры, програма считает строку правильной... А мне надо что бы она ругалась, когда в строку попадают символы не относящиеся к алфавиту или пунктуационные знаки. |
| Автор: diadiavova 19.6.2009, 13:56 | ||
Для символов, не относящихся к алфавиту есть спецсимвол \W. Точнее сказать это НЕ \w, а учитывая, что последний кроме алфавитных символов включает ещё и цифры, то неалфавит будет таким [\W\d]. И проверять надо при помощи функции IsMatch
|
| Автор: N1ko 19.6.2009, 14:32 |
| Хорошо... Допустим я ввожу строку "qwerty;.,1" в текстовое поле. В данной строке присутствуют как символы алфавита, пунктуационные знаки так и цифры. Попробовал твой вариант, но программа пропускает этот случай и считает его правильным.(Хотя алфавит вроде бы и запрещён) Поскольку в строке есть всего лишь один разрешённый символ(цифра). |
| Автор: diadiavova 19.6.2009, 14:36 | ||
Я не правильно написал, тут надо не проверять на соответствие, а проверять их количество
бывает |
| Автор: Grok 20.6.2009, 00:45 | ||||
N1ko, в коде что писал diadiavova
данный предикат есть true, если в строке встречается неалфавитный символ или цифра, соответственно в сроке "qwerty;.,1" их есть целых 4(";.,1"), при наличии хотя бы одного из них строка правильная, и если ты хочешь исключить в строке эти символы, тоесть строка была бы корректной, если они не встречаются, то соответствено
|
| Автор: N1ko 12.9.2009, 13:46 | ||
Пишу вот такую строку
подразумевая под ней что моя строка может содержать буквы, цифры и знак пробела. НО не может содержать другие знаки:точки запятые и тп. Потом например ввожу следующую строку "sdf sdfg" Сообщение на окно не вылазит. Что я делаю не так. Уже всё перерыл в поисках ответа. |
| Автор: diadiavova 12.9.2009, 13:52 | ||
|
| Автор: N1ko 12.9.2009, 18:13 |
| Попробовал твой ваиант Допустим ввожу строку "ffggr;;;ewqq", оно её принимает как правильную хотя поскольку здесь присутствуют точки с запятой, теоретически такого быть не должно |
| Автор: diadiavova 12.9.2009, 18:31 | ||
|
| Автор: N1ko 12.9.2009, 23:03 |
| А что значит ^ и +$ в данном случае? Читал инфу по поводу этих знаков, но всё равно не очень понятно зачем они здесь |
| Автор: diadiavova 12.9.2009, 23:08 |
Начало и конец проверяемой строки. Без них берётся только часть строки и выдаётся ответ, что типа соответствует, а та часть, где точки с запятой не учитывается. Эти значки показывают, что соответствие должно быть подтверждено ели только вся строка соответствует шаблону. Но их значение при однострочном и многострочном форматах немного отличается, но всё в документации есть. Добавлено через 7 минут и 46 секунд А да, только сейчас заметил. Плюсик показывает, что символ может встречаться один или более раз. Без него шаблон соответствует одному символу. |
| Автор: Экскалупатор 12.9.2009, 23:57 |
| а что если по коду символов проверять? т.е. если символ попадает в заданный диапазон то все ок. а если нет то ставим счетчику +1, и потом проверяем счетчик? сильно не кричите, мне просто интересно, будет ли это нормальным или лучше все таки через regex? |
| Автор: diadiavova 13.9.2009, 00:28 |
| Экскалупатор, Тогда придётся проверять несколько диапазонов для каждого символа и если задача слегка изменится код может сильно усложнится. Регулярные выражения сильно упрощают весь процесс: небольшой шаблон и простейший код обработки, в случае изменения задачи немного подправить шаблон и всё. |