我想将字符串格式化为删除小数并且仅保留整数,但小数点后面包含一些后续零。如何格式化它以使那些0消失?
我有输入字符串数据:
var xRaw= ",String30.0,String1.0,String0.0,String-1.0,StringOFF".Split(',').ToList();
如何摆脱格式:"30,1,0,-1,OFF"
var ValuesString = xRaw.Select(x => Regex.Replace(x, "[^OF0-9-,\\.]", "")).ToList()
.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
以上正则表达式将删除字符串并保留所需的字符串" OFF"但它保留了另一个紧挨着"。"点。
答案 0 :(得分:1)
您可以通过简单地添加BOOST_ROOT_DIR
替代方法来修复您的模式(如果它对你来说足够好),也可以删除浮点数的小数部分。
\.[0-9]+
更好的选择是将@"[^OF0-9-,.]|\.[0-9]+".
作为字符的序列,而不仅仅是OFF
或O
:
F
此处,Regex.Replace(x, @"(OFF)|[^0-9-,.]|\.[0-9]+", "$1")
被捕获到第1组,OFF
反向引用将其恢复到结果字符串中。
答案 1 :(得分:0)
嗯......我认为这适合你的输入字符串。在不知道可能发生什么变化的情况下,无法知道它是否适用于您可能获得的所有数据。
var xRaw= ",String30.0,String1.0,String0.0,String1.0,StringOFF";
string result = String.Join(",",
Regex.Matches(xRaw, "\\d+.?\\d*|OFF")
.Cast<Match>()
.Select(m => {
decimal d;
if(decimal.TryParse(m.Value, out d))
return ((int)d).ToString();
return m.Value;
}));
答案 2 :(得分:0)
这是一个简单的解决方案:
var input = ",String30.0,String1.0,String0.0,String-1.0,StringOFF";
var output = Regex.Replace(Regex.Replace(input, @"[^OF\-\d.,]", ""), @"\.\d", "").TrimStart(',');
答案 3 :(得分:0)
string giventxt = "text text 54654654200500.0000 text text";
string[] arry = giventxt.Split('.');
string arry1 = arry[1];
string[] arry2 = arry1.Split(' ');
string completestr = arry[0] + " " + arry2[1] + " " + arry2[2];