我正在研究C#中的例程
我有一个字母数字表格编号列表,我想检索小数字前的数字,以便在我的例行程序中使用。
FP10.01-->10
M1.01-->1
PP8.01-->8
如果可能的话,这样的事情怎么能以字符串或整数来实现呢?
先谢谢
答案 0 :(得分:1)
您可以使用正则表达式:
Regex r = new Regex("([0-9]+)[.]");
string s = "FP10.01";
var result = Convert.ToInt32(r.Match(s).Groups[1].ToString()); //10
答案 1 :(得分:0)
要将结果元素累积到列表中,您可以执行以下操作:
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();
这将采用myList
中的每个元素,然后从索引0
获取每个元素的子字符串,直到.
,然后用{替换所有非数字数据{1}}然后最后将字符串元素解析为string.Empty
并将其存储到列表中。
另一种变体是:
int
或者如果你想要元素是字符串,那么你可以这样做:
List<int> resultSet =
myList.Select(e => e.Substring(0, e.IndexOf('.')))
.Select(e => string.Join(string.Empty, e.Where(char.IsDigit)))
.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();
类型的单个元素,您可以创建一个辅助函数:
string
要检索类型为public static string GetValueBeforeDot(string input){
return input.Substring(0, input.IndexOf('.'))
.Where(char.IsDigit)
.Aggregate(string.Empty, (e, a) => e + a);
}
的单个元素,则辅助函数应为:
int
答案 2 :(得分:0)
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;
}
答案 3 :(得分:0)
此方法通过用空字符串替换它们来删除字母字符。分裂&#39;。&#39;字符将为您留下一个由索引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