2017-03-17 175 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

是的,但我延长,因为可能在某些情况下,他需要不同的东西 –