Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проверка типи введенных данных

514
08 апреля 2008 года
swordholder99
165 / / 11.12.2006
Есть ли какая нибудь готовая функция (на C# .NET 3.5) для проверки введной строки. Является введенная строка цифрой или буквами. По ASCII кодам проверять лень.
5
08 апреля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: swordholder99
Есть ли какая нибудь готовая функция (на C# .NET 3.5) для проверки введной строки. Является введенная строка цифрой или буквами. По ASCII кодам проверять лень.


Смотрите в сторону регулярных выражений - класс System.Text.RegularExpressions.Regex.

Вот пример:

 
Код:
private static Regex pattern = new Regex("^[0-9a-zA-z]+$",
    RegexOptions.Singleline | RegexOptions.Compiled);

private static bool IsAlphaDigit(string text) {
    return pattern.Match(text).Success;
}
Функция проверяет, содержит ли строка символов text лишь одни цифры или литералы латиницы.
3
08 апреля 2008 года
Green
4.8K / / 20.01.2000
Цитата: hardcase
Смотрите в сторону регулярных выражений - класс System.Text.RegularExpressions.Regex.


М-да уж...
Можно ещё девочку оператора посадить, при введении новой строки, ей будет отсылаться письмо со строкой и SMS с сообщением о необходимости посмотреть почту. Она смотрит буковки и циферки и пишет ответ: "число" или "не число".
:D

Я не знаю есть ли в C# функция проверки является ли строка числом, но в C# наверняка есть функция перевода строки в число. Пробуем перевести, если получается - строка число. Но автору видимо, лень копаться в документации к C#.

А если б было не лень давно бы написал функцию в три строчки (псевдокод):

 
Код:
for char in string:
    if not isNumber(char): return false
return true
6.6K
08 апреля 2008 года
Ordos
105 / / 02.11.2007
Цитата:
М-да уж...
Можно ещё девочку оператора посадить, при введении новой строки, ей будет отсылаться письмо со строкой и SMS с сообщением о необходимости посмотреть почту. Она смотрит буковки и циферки и пишет ответ: "число" или "не число".
:D



М-да уж...
Можно ещё создать базу данных со всеми возможными комбинациями символов и для каждой комбинации указывать тип: число, строка итд... и просто обращаться к бд...

Конвертировать кажыдй символ в число не менее извращённый способ (к тому же очень долгий), регулярные выражения это то, что нужно для решения проблемы. (Потому что для решения проблеммы лучше пользоваться тем, что предназначено для решения этой проблеммы, а так можно и автомобильные шины ртом надувать)

3
08 апреля 2008 года
Green
4.8K / / 20.01.2000
Цитата: Ordos

Конвертировать кажыдй символ в число не менее извращённый способ (к тому же очень долгий), регулярные выражения это то, что нужно для решения проблемы. (Потому что для решения проблеммы лучше пользоваться тем, что предназначено для решения этой проблеммы, а так можно и автомобильные шины ртом надувать)


Конвертировать?
1) где ты видишь конвертацию?
2) даже если б была "конвертация"она выглядит примерно так: char - '0'. Офигительно сложно!

А регулярные выражения тут НЕ НУЖНЫ!
ЛМШНИЕ они тут. Это как из пушки по воробьям.
Указанная задача - не проблема, а регулярные выражения не предназначены для решения ТАКИХ элементарных задач.

6.6K
09 апреля 2008 года
Ordos
105 / / 02.11.2007
Цитата:
C# наверняка есть функция перевода строки в число. Пробуем перевести, если получается - строка число.


1. Процесс перевода строки в число называется конвертацией.
2. Я соглашусь, что если задача стоит так: "Если строка является числом, то перевести эту строку в число и использовать" то тут конечно нужно конвертировать, но если зачача стоит "Просто проверить является ли строка числом, а потом с этой строкой что то сделать", то проверить через РВ будет проще и понятней, во всяком случае для меня, тк в С# это делается не сложнее чем сконвертировать строку в число.

5
09 апреля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Green
А регулярные выражения тут НЕ НУЖНЫ!
ЛМШНИЕ они тут. Это как из пушки по воробьям.
Указанная задача - не проблема, а регулярные выражения не предназначены для решения ТАКИХ элементарных задач.


В принципе согласен. Просто после таких элементарных задач ставятся обычно более сложные, типа, "а что если строка должна быть написана в некотором формате XXX".
Потому ответил наиболее общим решением.:rolleyes:


З.Ы. статическая функция+аналоги для вещественных чисел bool Int32.TryParse(string text, out int value) специально нужна для попытки конвертирования строки в число.

3
09 апреля 2008 года
Green
4.8K / / 20.01.2000
Цитата: Ordos

[QUOTE=Green;240847]
Я не знаю есть ли в C# функция проверки является ли строка числом, но в C# наверняка есть функция перевода строки в число. Пробуем перевести, если получается - строка число. Но автору видимо, лень копаться в документации к C#.


1. Процесс перевода строки в число называется конвертацией.
2. Я соглашусь, что если задача стоит так: "Если строка является числом, то перевести эту строку в число и использовать" то тут конечно нужно конвертировать, но если зачача стоит "Просто проверить является ли строка числом, а потом с этой строкой что то сделать", то проверить через РВ будет проще и понятней, во всяком случае для меня, тк в С# это делается не сложнее чем сконвертировать строку в число.
[/QUOTE]
М-да...
Странно, что ты не придрался к "девочке-оператору"...

Конвертация - была лишь одним из вариантов, "для ленивых".
А вот далее идущего слона, ты, видимо, не заметил:

Цитата: Green

А если б было не лень давно бы написал функцию в три строчки (псевдокод):
 
Код:
for char in string:
    if not isNumber(char): return false
return true


Где здесь конвертация?
Регулярные выражения проще и понятнее, чем этот код?
Т.е. вот этот код ПРОЩЕ и ПОНЯТНЕЕ? :D

 
Код:
private static Regex pattern = new Regex("^[0-9a-zA-z]+$",
    RegexOptions.Singleline | RegexOptions.Compiled);

private static bool IsAlphaDigit(string text) {
    return pattern.Match(text).Success;
}


P.S. Знание и умение пользоваться инструментом или приемом (в том числе регуляркой) ещё не повод применять и засовывать их куда не попадя.
514
09 апреля 2008 года
swordholder99
165 / / 11.12.2006
Впрочем всем спасибо
6.6K
10 апреля 2008 года
Ordos
105 / / 02.11.2007
Цитата:
P.S. Знание и умение пользоваться инструментом или приемом (в том числе регуляркой) ещё не повод применять и засовывать их куда не попадя.



Если уж выпендриваться, то ВЫПЕНДРИВАТЬСЯ!!! :D:D:D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог