我有一个字符串,我将其拆分,以查看拆分值是否为字符串。如果是这样,我想返回true,否则返回false。
string words = "1 2 c 5";简单的方法,我可以通过转换为int数组,然后并排比较值。
int[] iar = words.Split(' ').Select(s => int.TryParse(s, out n) ? n : 0).ToArray();有谁能推荐更好的方法吗?
发布于 2013-06-18 22:52:02
您可以简单地进行检查,而不使用Split
var result = words.Any(c => !char.IsWhiteSpace(c)
&& !char.IsDigit(c));或者使用Split
var result = words.Split()
.Any(w => w.Any(c => !char.IsDigit(c)));重点是您可以使用char.IsDigit而不是int.Parse或int.TryParse进行检查。
发布于 2013-06-18 22:52:53
你可以用一个简单的小方法做到这一点:
public static bool CheckForNum(string[] wordsArr)
{
int i = 0;
foreach (string s in wordsArr)
{
if (Int32.TryParse(s, out i))
{
return true;
}
}
return false;
}使用:
bool result = CheckForNum(words.Split(' '));
Console.Write(result);发布于 2013-06-18 22:50:47
为什么不使用正则表达式呢?如果字符串中包含单词和数字,则必须包含字母和数字字符。我不完全理解你问题中的逻辑,所以你可能需要调整这里的逻辑。
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
}https://stackoverflow.com/questions/17171906
复制相似问题