Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C sprintf是否有一个C等价物(结果为“5.5s”,stringValue) 当C++编码时,我可以做如下的事情:< /P> sprintf(result, "%5.5s", stringValue);_C#_Formatting - Fatal编程技术网

C# C sprintf是否有一个C等价物(结果为“5.5s”,stringValue) 当C++编码时,我可以做如下的事情:< /P> sprintf(result, "%5.5s", stringValue);

C# C sprintf是否有一个C等价物(结果为“5.5s”,stringValue) 当C++编码时,我可以做如下的事情:< /P> sprintf(result, "%5.5s", stringValue);,c#,formatting,C#,Formatting,这将确保打印的值始终为5个字符长,根据需要填充或截断 我发现自己需要C#中使用String.Format的相同功能:- String.Format("{0,5}", stringValue); 虽然这对于较短的值很好,但不会截断较长的值 什么是最好的解决方案?没有什么直接等效的方法,与之不同 您可以使用子字符串和Math.Min: String.Format("{0,5}", stringValue.Substring(0, Math.Min(stringValue.Length, 5)));

这将确保打印的值始终为5个字符长,根据需要填充或截断

我发现自己需要C#中使用String.Format的相同功能:-

String.Format("{0,5}", stringValue);
虽然这对于较短的值很好,但不会截断较长的值


什么是最好的解决方案?

没有什么直接等效的方法,与之不同

您可以使用
子字符串
Math.Min

String.Format("{0,5}", stringValue.Substring(0, Math.Min(stringValue.Length, 5)));

没有内置格式来满足您的需要。尝试定义自定义扩展方法并使用它

public static class StringExtensions
{
    public static string TruncateTo(this string str, int maxCharsCount)
    {
        if (str.Length > maxCharsCount)
            return str.Substring(0, maxCharsCount);
        return str;
    }
}
现在你可以

Console.WriteLine("{0,3}", "long long long value".TruncateTo(3));
Console.WriteLine("{0,7}", "short".TruncateTo(7));
将打印:

lon
  short
试试这个

我认为stringValue是您的字符串变量,如果是,那么代码将是

stringValue = (stringValue.Length < 5) ? stringValue  : stringValue.Substring(0,4);
stringValue=(stringValue.Length<5)?stringValue:stringValue.Substring(0,4);

这里有一个扩展方法,它可以实现您想要的功能。您可以根据需要更改最大长度和填充字符,但默认值分别为
5
-

public static string ToCustomSprintF(this string initial, int max_length = 5, char padChar = '-')
{
     int len = initial.Length;

     if (len == max_length)
         return initial;
     else if (len < max_length)
         return initial.PadRight(len + (max_length - len), padChar); 

     return initial.Substring(0, max_length);  

}

@伊利亚·伊万诺夫我修改了密码。现在不会有例外,我认为这是最好的选择。如果我这样重做:
String.Format(“{0,5}”,StringValue).Substring(0,5)
我不需要Math.Min()。
string str = "1234".ToCustomSprintF();
//output would be 1234-