首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果字符串数组在C#中将Int和String类型值的混合转换为int,如何返回true

如果字符串数组在C#中将Int和String类型值的混合转换为int,如何返回true
EN

Stack Overflow用户
提问于 2013-06-18 22:44:58
回答 3查看 192关注 0票数 0

我有一个字符串,我将其拆分,以查看拆分值是否为字符串。如果是这样,我想返回true,否则返回false。

代码语言:javascript
运行
复制
string words = "1 2 c 5";

简单的方法,我可以通过转换为int数组,然后并排比较值。

代码语言:javascript
运行
复制
int[] iar = words.Split(' ').Select(s => int.TryParse(s, out n) ? n : 0).ToArray();

有谁能推荐更好的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-18 22:52:02

您可以简单地进行检查,而不使用Split

代码语言:javascript
运行
复制
var result = words.Any(c => !char.IsWhiteSpace(c) 
                         && !char.IsDigit(c));

或者使用Split

代码语言:javascript
运行
复制
var result = words.Split()
                  .Any(w => w.Any(c => !char.IsDigit(c)));

重点是您可以使用char.IsDigit而不是int.Parseint.TryParse进行检查。

票数 7
EN

Stack Overflow用户

发布于 2013-06-18 22:52:53

你可以用一个简单的小方法做到这一点:

代码语言:javascript
运行
复制
public static bool CheckForNum(string[] wordsArr)
{
     int i = 0;
     foreach (string s in wordsArr)
     {
         if (Int32.TryParse(s, out i))
         {
             return true;
         }
     }
     return false;
 }

使用:

代码语言:javascript
运行
复制
bool result = CheckForNum(words.Split(' '));
Console.Write(result);
票数 2
EN

Stack Overflow用户

发布于 2013-06-18 22:50:47

为什么不使用正则表达式呢?如果字符串中包含单词和数字,则必须包含字母和数字字符。我不完全理解你问题中的逻辑,所以你可能需要调整这里的逻辑。

代码语言:javascript
运行
复制
using System;
using System.Text.RegularExpressions;

...

string words = "1 2 c 5";

Match numberMatch = Regex.Match(words, @"[0-9]", RegexOptions.IgnoreCase);
Match letterMatch = Regex.Match(words, @"[a-zA-Z]", RegexOptions.IgnoreCase);

// Here we check the Match instance.
if (numberMatch.Success && letterMatch.Success)
{
    // there are letters and numbers
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17171906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档