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

Posted

技术标签:

【中文标题】如何检查字符串是不是包含字符或数字 C++ 和 C#【英文标题】:How to check if a string contains characters or numbers C++ and C#如何检查字符串是否包含字符或数字 C++ 和 C# 【发布时间】:2011-07-22 07:37:52 【问题描述】:

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

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

告诉我有哪些可用的功能?

【问题讨论】:

你有数字范围吗? “-2”是一个可能出现的值吗?是“3.1415”吗?是“3E-4”吗? @Rahul,如果您发现某人的答案是正确的,请将其标记为答案。将您的接受率视为 0% 会使其他人不愿意回答您的问题。 【参考方案1】:

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

Int32.TryParse:

String variable = "1234";
Integer dummyresult
if Int32.TryParse(variable,dummyresult)

    // variable is numeric

else

    // variable is not numeric

【讨论】:

【参考方案2】:
string s = "1235";

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于如何检查字符串是不是包含字符或数字 C++ 和 C#的主要内容,如果未能解决你的问题,请参考以下文章

C++ 检查字符串是不是包含至少 1 个数字和 1 个字母

如何检查 C++ 字符串是不是为 int?

如何检查字符串中的数据是不是是 C++ 上的数字?

如何在 JavaScript 中检查字符串是不是包含数字和特殊字符?

如何检查字符串是不是至少包含一个数字、字母和既不是数字也不是字母的字符?

PHP:检查我的字符串是不是只包含数字和“X”字符