Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索字符串值中小数点之前的数值_C# - Fatal编程技术网

C# 检索字符串值中小数点之前的数值

C# 检索字符串值中小数点之前的数值,c#,C#,我正在用C语言编写一个例程# 我有一个字母数字表编号的列表,我想在我的例程中检索小数点之前的数字 FP10.01-->10 M1.01-->1 PP8.01-->8 如果可能的话,如何将这样的内容实现为字符串或整数 感谢高级您可以使用正则表达式: Regex r = new Regex("([0-9]+)[.]"); string s = "FP10.01"; var result = Convert.ToInt32(r.Match(s).Groups[1].ToStri

我正在用C语言编写一个例程#

我有一个字母数字表编号的列表,我想在我的例程中检索小数点之前的数字

FP10.01-->10
M1.01-->1
PP8.01-->8
如果可能的话,如何将这样的内容实现为字符串或整数

感谢高级

您可以使用正则表达式:

Regex r = new Regex("([0-9]+)[.]");

string s = "FP10.01";

var result = Convert.ToInt32(r.Match(s).Groups[1].ToString()); //10

要将结果元素累积到列表中,可以执行以下操作:

List<string> myList = new List<string>(){ "FP10.01","M1.01", "PP8.01"};
List<int> resultSet = 
     myList.Select(e => 
             Regex.Replace(e.Substring(0, e.IndexOf('.')), @"[^\d]", string.Empty))
           .Select(int.Parse)
           .ToList();
或者,如果希望元素是字符串,则可以执行以下操作:

List<string> resultSet =
               myList.Select(e => e.Substring(0, e.IndexOf('.')))
                     .Select(e => string.Join(string.Empty, e.Where(char.IsDigit)))                  
                     .ToList();
要检索
int
类型的单个元素,辅助函数应为:

public static int GetValueBeforeDot(string input){
       return int.Parse(input.Substring(0, input.IndexOf('.'))
                   .Where(char.IsDigit)
                        .Aggregate(string.Empty, (e, a) => e + a));
}

这种方法通过将字母表字符替换为空字符串来删除字母表字符。在“.”字符上进行拆分将得到一个两元素数组,该数组由索引0处的数字和索引1处十进制值之后的数字组成

string input = "FP10.01";
var result = Regex.Replace(input, @"([A-Za-z]+)", string.Empty).Split('.');
var beforeDecimalNumbers = result[0]; // 10
var afterDecimalNumbers = result[1];  // 01

选中此项,可能会有一个ideaTry将每个字母数字字符串放入一个列表中,并将所有可能的项(数字)转换为整数。然后读取相邻的整数并将其输出为一个字符串。正则表达式与“.”和r.Match匹配。组[1]是十进制组,而不是数字组
public static int GetValueBeforeDot(string input){
       return int.Parse(input.Substring(0, input.IndexOf('.'))
                   .Where(char.IsDigit)
                        .Aggregate(string.Empty, (e, a) => e + a));
}
        string input = "FP10.01";
        string[] _input = input.Split('.');
        string num = find(_input[0]);

        public string find(string input)
        {
            char[] _input = input.ToArray();
            int number;
            string result = null;
            foreach (var item in _input)
            {                
                if (int.TryParse(item.ToString(), out number) == true)
                {
                    result = result + number;
                }
            }

            return result;
        }
string input = "FP10.01";
var result = Regex.Replace(input, @"([A-Za-z]+)", string.Empty).Split('.');
var beforeDecimalNumbers = result[0]; // 10
var afterDecimalNumbers = result[1];  // 01