将长字符串格式化为短字符串 C#

3

我有一些字符串,例如:

1.5555555555555
2.3421354325435354545
4.509019292

我想将它们格式化为以下字符串:

1.5555
2.3421
4.5090

我尝试使用C#的String.Format方法,但我无法正确地使用它。

请问有人可以给我正确的C#语句来完成这个任务吗?

谢谢。


你尝试了什么?string.Format()与数字格式字符串(如g或f)取决于输入值是否为数字(十进制,浮点数,双精度)。因此,您需要首先解析数字字符串。如果您只想截断而不四舍五入,则可以始终使用string.Substring()。 - James Kovacs
你是否也有像1003.1543234这样的字符串?在格式化时应该怎么处理它们? - Kees C. Bakker
这些不是字符串,它们是十进制数,你的描述是不正确和误导的。 - JrBriones
3个回答

3

3

不清楚您是否总是处理数字值。如果要避免将字符串解析为数字,可以尝试以下方法:

public static string TrimTo(string str, int maxLength)
{
    if (str.Length <= maxLength)
    {
        return str;
    }
    return str.Substring(0, maxLength);
}

如果提供的字符串超过六个字符,此代码将把其剪切为六个字符。这看起来是您想要的,但是(正如Kees所指出的),对于像“1234567.890”这样的字符串,会产生意外结果。

在这里,条件子句很必要,因为如果第二个索引超出了字符串范围(换句话说,如果字符串长度小于maxLength),则String.Substring会报错。

(如果您已经尝试过C# 3.0的扩展方法,您可能会发现,稍微修改一下上面的代码就可以变成一个绝佳的机会:string trimmed = s.TrimTo(10);


考虑到1.555555555四舍五入后为1.5555,我认为这是最好的方法。 - Greg

0
如果您将字符串转换为双精度浮点数,就可以使用String.Format指定在重新格式化为字符串时要包含多少小数位。
String.Format("{0:0.0000}", double.Parse("1.55555555555555"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接