簡體   English   中英

如何使用正則表達式刪除字符串中的小數點?

[英]How to Remove the Decimal Point in string using regex?

我想將字符串格式化為刪除的小數並僅保留整數,但是小數在小數之后包含一些后面的零。 如何格式化它以使那些0消失?

我有輸入字符串數據:

var xRaw= ",String30.0,String1.0,String0.0,String-1.0,StringOFF".Split(',').ToList();

如何輸出"30,1,0,-1,OFF"格式: "30,1,0,-1,OFF"

var ValuesString = xRaw.Select(x => Regex.Replace(x, "[^OF0-9-,\\.]", "")).ToList()
    .Where(s => !string.IsNullOrWhiteSpace(s)).ToList();

regex上方將刪除字符串,並保留所需的字符串“ OFF”,但保留另一個緊挨着“”的字符串。 點。

您可以通過簡單地添加\\.[0-9]+替代來刪除浮點數的小數部分來修復您的模式(如果它對您而言足夠好)。

@"[^OF0-9-,.]|\.[0-9]+". 

更好的選擇是將OFF保持為一個字符序列 ,而不僅僅是任何OF

Regex.Replace(x, @"(OFF)|[^0-9-,.]|\.[0-9]+", "$1")

在這里, OFF被捕獲到組1中, $1反向引用將其恢復為結果字符串。

嗯...我認為這適合您的輸入字符串。 不知道會發生什么變化,就無法知道它是否適用於您可能獲得的所有數據。

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;
                                     }));

這是一個簡單的解決方案:

var input = ",String30.0,String1.0,String0.0,String-1.0,StringOFF";
var output = Regex.Replace(Regex.Replace(input, @"[^OF\-\d.,]", ""), @"\.\d", "").TrimStart(',');

工作示例: https : //dotnetfiddle.net/8IordG

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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM