Как проверить, содержит ли строка символы или цифры C ++ и C # - PullRequest
0 голосов
/ 22 июля 2011

У меня есть вероятное значение переменной следующим образом: «Имя_1» и «1535».

Я хочу, чтобы библиотечная функция в C ++ или C # определяла, является ли значение переменной «1535» (числовое) или «Name_1» (это имя).

Дайте мне знать, какие есть доступные функции?

Ответы [ 3 ]

1 голос
/ 22 июля 2011
string s = "1235";

Console.WriteLine("String is numeric: " + Regex.IsMatch(s, "^[0-9]+$"));
1 голос
/ 22 июля 2011

В C ++ boost :: lexical_cast пригодится для этого:

#include <boost/lexical_cast.hpp>
#include <iostream>

bool IsNumber(const char *s) {
  using boost::lexical_cast;

  try {
    boost::lexical_cast<int>(s);
    return true;
  } catch (std::bad_cast&) {
    return false;
  }
}

int main(int ac, char **av) {
  std::cout << av[1] << ": " << std::boolalpha << IsNumber(av[1]) << "\n";
}

РЕДАКТИРОВАТЬ : Если Boost недоступен, попробуйте следующее:

bool IsNumber2(const char *s) {

  std::istringstream stream(s);
  stream.unsetf(std::ios::skipws);

  int i;
  if( (stream >> i) && stream.eof() )
    return true;
  return false;
}
1 голос
/ 22 июля 2011

Предполагая, что любая нецелая строка может рассматриваться как "символ":

Int32.TryParse

String variable = "1234";
Integer dummyresult
if Int32.TryParse(variable,dummyresult)
{
    // variable is numeric
}
else
{
    // variable is not numeric
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...