[英]C# padLeft, not adding pad
我正在編寫一種格式化電話號碼的方法,如果初始數組中的數字少於10位,也會在開頭添加填充。 我只是輸入少於10位數的用例,我的方法顯然沒有添加填充。 最常見的錯誤是使用錯誤的padcount參數。 我確信我錯過了一些簡單的事情。
public static string CreatePhoneNumber(int[] numbers)
{
string numbas = string.Join("", numbers);
string ammendNumbas = numbas;
char pad = '0';
if ( numbas.Length < 10)
{
ammendNumbas = numbas.PadLeft(10, pad);
}
string formatString = "(###) ###-####";
var returnValue = Convert.ToInt64(ammendNumbas)
.ToString(formatString.Substring(0,ammendNumbas.Length+4))
.Trim();
return returnValue;
}
當您使用Convert.ToInt64時,您將刪除所有填充,因為填充只能應用於字符串。 應用填充后,您不需要將值轉換回整數。
我想你想要的是這個:
public static string CreatePhoneNumber(int[] numbers)
{
Int64 numbas = Convert.ToInt64(string.Join("", numbers));
return numbas.ToString("(000) 000-0000");
}
BlueMonk說的是正確的,但你可以使用String.Format進行填充
public static string CreatePhoneNumber(int[] numbers)
{
string phoneNumberStr = string.Join("", numbers);
var phoneNumber = Convert.ToInt64(phoneNumberStr);
return String.Format("{0:(###) ###-####}", phoneNumber);
}
這沒有經過測試但應該有效。
當您調用Convert.ToInt64
,前導零的信息將丟失。 您可以使用填充字符串表示的子字符串來提取數字組:
public static string CreatePhoneNumber(int[] numbers)
{
var numberString = string.Join("", numbers);
var paddedNumbers = numberString.PadLeft(10, '0');
return $"({paddedNumbers.Substring(0, 3)}) {paddedNumbers.Substring(3, 3)}-{paddedNumbers.Substring(6)}";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.