[英]Retrieving Numeric value before a decimal in a string value
我正在用 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();
這將獲取myList
中的每個元素,然后從索引0
到.
然后用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
類型的單個元素,則輔助函數應為:
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;
}
這種方法通過用空字符串替換字母字符來刪除字母字符。 在 '.' 上拆分字符將為您留下一個由索引 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.