如何解决如何只获取整数并删除C#中的所有字符串[重复]
|| 这个问题已经在这里有了答案:解决方法
input = Regex.Replace(input,\"[^0-9]+\",string.Empty);
, 有四种不同的方法(可能更多,但我选择了这些方法)。
#1:来自Bala R的正则表达式
string output = Regex.Replace(input,string.Empty);
#2:来自Donut和agent-j的正则表达式
string output = Regex.Match(input,@\"\\d+\").Value;
#3:Linq
string output = new string(input.ToCharArray().Where(c => char.IsDigit(c)).ToArray());
#4:子字符串,要使此字符串起作用,破折号必须在数字和文本之间的字符串中。
string output = input.Substring(0,input.IndexOf(\"-\")).Replace(\" \",\"\");
使用这些输入:
string input1 = \"01 - ABCDEFG\";
string input2 = \"01 - ABCDEFG123\";
对于1和2,结果将是:
output1 = \"01\";
output2 = \"01123\";
对于3和4,结果将是:
output1 = \"01\";
output2 = \"01\";
如果预期的结果是获取字符串中的所有数字,请使用#1或#2,但是如果预期的结果是仅获取破折号之前的数字,请使用#3或#4。
在字符串如此短的情况下,#1和#2的速度大致相同,而#3和#4的速度相同,但是如果存在大量迭代,或者字符串长四倍或更多,则#2比#1快,并且#4比#3快。
注意:如果必须在字符串#4中包含括号,则必须对此进行修改,但这不会使其变慢:
string output = input.Substring(0,\"\").Replace(\"(\",\"\");
, 尝试这个:
Convert.ToInt32(string.Join(null,System.Text.RegularExpressions.Regex.Split(s,\"[^\\\\d]\")))
它返回整数值1。
, string snum = System.Text.RegularExpression.Regex.Match(s,\"\\d+\").Value;
int num;
if (!int.TryParse(snum,out num))
throw new Exception();
, 您应该使用正则表达式-它们是将文本字符串与某些模式进行匹配的一种非常有效的方法,这是使用它们的绝佳方案。
模式“\\d+
\”将匹配1个或多个数字的序列。使用此模式从字符串中提取所有数字的简单方法如下:
public static List<int> ExtractInts(string input)
{
return Regex.Matches(input,@\"\\d+\")
.Cast<Match>()
.Select(x => Convert.ToInt32(x.Value))
.ToList();
}
因此,您可以像这样使用它:
List<int> result = ExtractInts(\"( 01 - ABCDEFG )\");
有关正则表达式的更多详细信息,请参阅本页(MSDN)或本页(有用的“备忘单”)。
, 查看此博客文章:
http://weblogs.asp.net/sushilasb/archive/2006/08/03/How-to-extract-numbers-from-string.aspx
一个简单的程序,使用正则表达式从字符串中提取数字。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ExtractNumbers(\"( 01 - ABCDEFG )\")); // 01
Console.ReadLine();
}
static string ExtractNumbers(string expr)
{
return string.Join(null,System.Text.RegularExpressions.Regex.Split(expr,\"[^\\\\d]\"));
}
}
希望这可以帮助!
, 从字符串获取所有数字
string str = \"01567438absdg34590\";
string result = \"\";
result = Regex.Replace(str,@\"[^\\d]\",\"\");
Console.WriteLine(result);
Console.Read();
输出:0156743834590
, Response.Write(Convert.ToDecimal(string.Join(null,System.Text.RegularExpressions.Regex.Split(TextBox1.Text,\"[^\\\\d .]\"))));
这适用于int
和decimal
号码。
, 尝试这个:
string XYZ = string.Join(null,System.Text.RegularExpressions.Regex.Split(“XYZ 77”,“[^\\d]”));
, 您还可以使用这种方法来获取适当的答案。
string sentence = \"10 cats,20 dogs,40 fish and 1 programmer\";
string[] digits= Regex.Split(sentence,@\"\\D+\");
foreach (string value in digits)
{
int number;
if (int.TryParse(value,out number))
{
Debug.Log(value);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。