从C#中的string中删除最后一个字符。 一个优雅的方式?
我有一个这样的数字string2223,00
。 我想把它2223
。 这是:没有“ , ” 后面的信息。 假设“ , ”后面只有两位小数。
我做了:
str = str.Remove(str.Length - 3, 3);
有没有更优雅的解决scheme? 也许使用另一个function? – 我不喜欢把明确的数字 –
您实际上可以使用带有一个参数的Remove重载:
str = str.Remove(str.Length - 3);
但是,如果您试图避免硬编码的长度,您可以使用:
str = str.Remove(str.IndexOf(','));
也许这个:
str = str.Split(",").First();
这将返回给您一个string,排除逗号后的所有内容
str = str.Substring(0, str.IndexOf(','));
当然,这假定你的string实际上有一个逗号和小数。 如果没有,上面的代码将会失败。 你想要做更多的检查:
commaPos = str.IndexOf(','); if(commaPos != -1) str = str.Substring(0, commaPos)
我假设你正在使用一个string开始。 理想的情况下,如果你使用一个数字开头,就像float或者double,你可以把它转换成一个int
,然后执行myInt.ToString()
:
myInt = (int)double.Parse(myString)
这使用当前的文化来分析双精度(这里在美国,我们用小数点)。 但是,这又假设你的inputstring是可以被parsing的。
String.Format("{0:0}", 123.4567); // "123"
如果你的初始值是一个十进制string,你将需要转换
String.Format("{0:0}", double.Parse("3.5", CultureInfo.InvariantCulture)) //3.5
在这个例子中,我select了Invariant文化,但你可以使用你想要的。
我更喜欢使用“格式化”function,因为您将来不会知道小数是否包含2或3的前导数字。
编辑:您也可以使用Truncate
删除所有后,或。
Console.WriteLine(Decimal.Truncate(Convert.ToDecimal("3,5")));
使用:
public static class StringExtensions { /// <summary> /// Cut End. "12".SubstringFromEnd(1) -> "1" /// </summary> public static string SubstringFromEnd(this string value, int startindex) { if (string.IsNullOrEmpty(value)) return value; return value.Substring(0, value.Length - startindex); } }
我更喜欢这里的扩展方法有两个原因:
- 我可以用Substring链接它。
Example: f1.Substring(directorypathLength).SubstringFromEnd(1)
- 速度。
你可以使用TrimEnd
。 它也很高效,看起来很干净。
"Name,".TrimEnd(',');
尝试以下。 它为我工作:
str = str.Split(',').Last();
你可以使用LastIndexOf和Substring组合来获取在sting中逗号最后一个索引左边的所有字符。
string var = var.Substring(0,var.LastIndexOf(','));
使用lastIndexOf。 喜欢:
string var = var.lastIndexOf(',');