2017-03-17 172 views
0

我正在從arduino發送數據到C#並出現問題。我從串口讀取的值的末尾帶有一個「\ r」,例如:「19.42 \ r」。我找到了一個解決方案,通過使用Regex刪除我的號碼後的字符。但它也使我的雙整數。 「19.42 \ r」變成「1942」。我怎樣才能刪除我的字符串,但仍然保持價值爲雙?從C中刪除字符串#

line = Regex.Replace(line, @"[^\d]", string.Empty);

+0

如果你的目標是簡單地刪除'\ r'結尾,爲什麼要去一個正則表達式的麻煩?爲什麼不使用'Substring'? – Rob

+0

爲什麼不是'''「19.42 \ r」.Replace(「\ r」,string.Empty)'''? – tym32167

+0

'line.Replace(@「\ r」,「」)' –

回答

1

你想從字符串末尾修剪空白。

使用

line = line.TrimEnd(); 

C# demo

如果您需要實際提取從正則表達式的字符串雙號,使用

var my_number = string.Empty; 
var match = Regex.Match(line, @"[0-9]+\.[0-9]+"); 
if (match.Success) 
{ 
    my_number = match.Value; 
} 

如果數字可以沒有小數部分,使用@"[0-9]*\.?[0-9]+"正則表達式。

+0

謝謝,很好解釋! – Jens

+0

另外,如果你只是想刪除字符串末尾的非數字符號,你可以使用'line = Regex.Replace(line,@「\ D + $」,「」);'。 –

0
string data = "19.42\r"; 
return data.Substring(0, data.Length - 1); 

甚至更​​好

data.TrimEnd('\r') 
0

如果\ r被固定字符要刪除

string str = "awdawdaw\r"; 
str = str.replace("\r",""); 

如果\ r是不固定的字符要刪除

string str = "awdawdaw\\"; 
str = str.Substring((str.Length - 2), 2); \\will be removed 
+1

OP顯然希望只刪除'\ r'字符,並且只在字符串的末尾。您的代碼將在字符串中出現的任何位置移除「\ r」。 –

+0

是的,但我延長,因爲可能在某些情況下,他需要不同的東西 –