修剪和垫在一个字符串的方法

本文关键字:一个 字符串 方法 修剪 | 更新日期: 2023-09-27 17:57:52

我有一个接受一个字符串的方法,它必须得到一个正好有5个字符的字符串
用户可能会插入超过5个字符的字符串——在这种情况下,我想向左修剪
用户可能会插入少于5个字符的字符串——在这种情况下,我想向左填充。

我知道我可以用if/else条件来做,但我想知道字符串类是否有一些有用的东西可以在一个命令中处理这种情况。

你觉得怎么样?

修剪和垫在一个字符串的方法

尝试填充到5个字符,然后修剪到5个字母。填充物可能会使其过长也没关系,因为修剪会解决这个问题!:-)

这是一个简单的操作顺序问题,先垫,然后修剪到大小。。。像

string hi = "hello world"; //or try = "hi";
hi = hi.PadLeft(5, '0'); 
hi = hi.Substring(hi.Length - 5);
Console.WriteLine(hi);

当然,这是分支,但坦率地说,我认为它足够整洁:

var maxLength = 5;
var paddingChar = 'x';
input = input.Length > maxLength ?
    input.Remove(0, input.Length - maxLength) :
    input.PadLeft(maxLength, paddingChar);

您可以创建PadRight(或PadLeft)的扩展,例如:

public static string PadRight2(this string value, int exactWidth)
{
    return value.PadRight(exactWidth).Substring(0, exactWidth);
}

假设你想用字符"A"填充,那么:

("AAAAA" + st).Substring(st.Length)
// Note: padded string has length (st.Length + 5)  
// ... so substring offset is ((st.Length+5)-5) = st.Length

(在左边),或:

(st + "AAAAA").Substring(0,5)

(右边)?

试试这个:

string str = "abcdefghjxd";
 string split = str.Substring(0, 5);