[英]Extracting Numbers From A String
我正試圖操縱一個字符串..
例如:
string DiagnosesString "250.00 03 350.0001 450.00 01 550.00 02";
產量
250.00
350.00
450.00
550.00
我試圖使用Split方法。 正如您在350.0001中的示例中所看到的,其輸出為350.00。
我可以刪除03,02等。
問題:1。)我將如何刪除350.0001的o1只獲得350.00?
這是我的代碼:
string DiagnosisCodestemp = DiagnosesString.Replace(" 01 ", " ").Replace(" 02 ", " ").Replace(" 03 ", " ").Replace(" 04 ", " ").Replace(" 05 ", " ").Replace(" 06 ", " ").Replace(" 07 ", " ");
string[] DiagnosisCodesParts = DiagnosisCodestemp.Split();
var DiagnosisCodesParts =
DiagnosesString.Split(' ')
.Where(s => !s.StartsWith("0"))
.Select(s => Decimal.Parse(s))
.Select(d => d.ToString("0.00");
如何做一個Decimal.TryParse並格式化十進制數。 這也將清除壞的價值觀。
string DiagnosesString = "250.00 03 350.0001 450.00 01 550.00 02";
var diagnoses = DiagnosesString.Split(' ');
foreach(var diagnosis in diagnoses)
{
decimal temp;
if(diagnosis.Contains(".") && Decimal.TryParse(diagnosis, out temp))
{
// do something
var value = temp.ToString("0.00");
}
}
如果您正在處理數值,我建議將它們解析為實際的數字類型,例如使用Decimal.Parse
或Decimal.TryParse
。 然后,您可以使用格式將其轉換回字符串,例如myNumber.ToString("N2")
您可以將它們解析為double。 我喜歡使用XmlConvert
:
foreach (var s in diagnosisCodesParts)
{
var d = XmlConvert.ToDouble(s);
Console.WriteLine(string.Format({0:2}, d));
}
嘗試在空間上進行調整。
string DiagnosisCodestemp = DiagnosesString.Replace(" 01 ", " ").Replace(" 02 ", " ").Replace(" 03 ", " ").Replace(" 04 ", " ").Replace(" 05 ", " ").Replace(" 06 ", " ").Replace(" 07 ", " ");
string[] DiagnosisCodesParts = DiagnosisCodestemp.Split(' ');
這應該生成一個包含值的數組,您可以篩選所需的數組。 然后,您可以將值轉換為十進制並舍入為2位以刪除額外值。
你可以使用正則表達式匹配數字
/\d+\.\d+/
但這取決於您是否可以更准確地定義您的號碼。
decimal number;
string DiagnosesString = "250.00 03 350.0001 450.00 01 550.00 02";
foreach(var num in Regex.Matches(DiagnosesString, @"\d+\.\d+"))
{
Decimal.TryParse(num.ToString(), out number);
Console.WriteLine(number.ToString("0.00"));
}
可能你甚至需要這樣的正則表達式:
/(\d+.\d\d)\d*/
僅匹配格式為0.00的數字...您應該提供更多數據,以便您希望如何解析數據。
1)將字符串轉換為小數2)將小數點數舍入為2位小數3)將其轉換回字符串
string DiagnosesString =“250.00 03 350.0001 450.00 01 550.00 02”;
string DiagnosisCodestemp = DiagnosesString.Replace(“01”,“”)。Replace(“02”,“”)。Replace(“03”,“”)。Replace(“04”,“”).Replace(“05” ,“”)。替換(“06”,“”)。替換(“07”,“”);
string[] DiagnosisCodesParts = DiagnosisCodestemp.Split();
foreach (var item in DiagnosisCodesParts)
{
string[] parts = item.Split('.');
string num = parts[1];
if (num.Length > 2)
{
num = num.Replace(num, "00");
}
}
好吧,我不確定我完全理解你的問題,但我會試試。
你需要將字符串轉換為數值,我選擇十進制,因為它不會丟失精度,如double或float。 然后,您可以使用格式字符串說明符將其轉換為您想要的小數形式:
var list = List<string>();
foreach(var s in splitString) {
// code to rule out 02, 01, etc. goes here
decimal tmp;
if (decimal.TryParse(s, out tmp)) {
var code = tmp.ToString("0.00");
list.Add(code);
} else {
// something went wrong, handle it here
}
}
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "250.00 03 350.0001 450.00 01 550.00 02";
Match match = Regex.Match(input, @"[0-9]+[/.][0-9]+", RegexOptions.IgnoreCase);
while (match.Success)
{
string key = match.Value;
Console.WriteLine(String.Format("{0:0.00}", Convert.ToDecimal(key, new CultureInfo("en-US"))));
match = match.NextMatch();
}
}
}
List list = new List();
string DiagnosesString = "250.00 03 350.0001 450.00 01 550.00 02";
string DiagnosisCodestemp = DiagnosesString.Replace(" 01 ", " ").Replace(" 02 ", " ").Replace(" 03 ", " ").Replace(" 04 ", " ").Replace(" 05 ", " ").Replace(" 06 ", " ").Replace(" 07 ", " ");
string[] DiagnosisCodesParts = DiagnosisCodestemp.Split();
foreach (var item in DiagnosisCodesParts)
{
string[] parts = item.Split('.');
string num = parts[1];
string finalValue = string.Empty;
if (num.Length > 2)
{
num = num.Replace(num, "00");
finalValue = parts[0]+"."+num;
}
else
{
finalValue = parts[0] + "." + num;
}
list.Add(finalValue);
}
o / p:250.00 350.00 450.00 550.00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.