如何检查字符串是否包含字符或数字C ++和C#

时间:2011-07-22 07:37:52

标签: c# c++ string

我有可能的变量值,如下所示“Name_1”和“1535”。

我想用C ++或C#中的库函数来确定变量值是“1535”(它是数字)还是“Name_1”(它是一个名字)。

让我知道有哪些功能?

3 个答案:

答案 0 :(得分:1)

假设可以将任何非整数字符串视为“字符”:

Int32.TryParse

String variable = "1234";
Integer dummyresult
if Int32.TryParse(variable,dummyresult)
{
    // variable is numeric
}
else
{
    // variable is not numeric
}

答案 1 :(得分:1)

string s = "1235";

Console.WriteLine("String is numeric: " + Regex.IsMatch(s, "^[0-9]+$"));

答案 2 :(得分:1)

在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;
}