如何转换以下字符串:
string x = "text text 542050.0000 text 245.00 text";
至:“文本文本542050文本245文本”
我想保留此字符串中的所有文本,只删除数字的小数部分
答案 0 :(得分:1)
如果要解决在字符串中删除小数的一般情况,可以使用RegEx:
var input = "text text 542050.0000 text text";
var regex = "((?<keep>[0-9]+)\\.[0-9]+)";
var matchEvaluator = new System.Text.RegularExpressions.MatchEvaluator((m) => m.Groups["keep"].Value);
var output = System.Text.RegularExpressions.Regex.Replace(input, regex, matchEvaluator);
RegEx将匹配所有小数,并返回整个部分作为替换。请注意,如果你有一个像5.2.1这样的字符串,那么这将导致“5.1”。
如果您想输出特定数量的小数位,可以试试这个:
var input = "text text 542050.0129 text text";
var regex = "([0-9]+\\.[0-9]+)";
var matchEvaluator = new System.Text.RegularExpressions.MatchEvaluator((m) => {
var decimalValue = double.Parse(m.Groups[0].Value);
return String.Format("{0:0.000}", Math.Round(decimalValue, 3));
});
var output = System.Text.RegularExpressions.Regex.Replace(input, regex, matchEvaluator);
在我的例子中,我已经四舍五入到3 dp并用3 dp格式化(格式化以确保它总是输出.000 - 如果你不需要它你可以删除这一步)。对于上面的“542050.0129”,它将输出“542050.013”