giá trị int dưới 10 chuyển đổi thành chuỗi hai chữ số


119
string strI;   

for (int i = 1; i < 100; i++)
    strI = i.ToString();

ở đây, nếu i = 1sau đó ToStringmang lại"1"

Nhưng tôi muốn lấy "01"hoặc"001"

Nó trông khá dễ dàng, nhưng chỉ có bài viết về

datetime.ToString("yyyy-MM-dd")`

Tốt nhất là đăng mã biên dịch và chạy, tostirngkhông đúng. Ngoài ra, đối với các lập trình viên, 0xgợi ý rằng bạn đang đề cập đến cơ số thập lục phân. Bạn đang tìm kiếm "số 0 ở đầu".
Kobi

@Kobi xin lỗi, ngôn ngữ mẹ đẻ của tôi không phải là tiếng Anh và tiếng Anh của tôi thực sự rất tệ. và tôi đến trường tiếng Anh hàng ngày để cải thiện trình độ tiếng Anh của mình. Bạn có thể vui lòng hiểu cho tôi. và tôi đã chỉnh sửatostirng
Sungguk Lim.

Vậy là được rồi. Chỉ là một gợi ý. Dù sao, int.ToString có thể có một định dạng, giống như DateTime.ToString.
Kobi

Câu trả lời:



12

Câu trả lời được chấp nhận là tốt và nhanh chóng:

i.ToString("00")

hoặc là

i.ToString("000")

Nếu bạn cần phức tạp hơn, String.Format đáng để thử:

var str1 = "";
var str2 = "";
for (int i = 1; i < 100; i++)
{
    str1 = String.Format("{0:00}", i);
    str2 = String.Format("{0:000}", i);
}

Đối với i = 10trường hợp:

str1: "10"
str2: "010"

Tôi sử dụng cái này, ví dụ, để xóa văn bản trên các Điều khiển nhãn cụ thể trên biểu mẫu của tôi theo tên:

private void EmptyLabelArray()
{
    var fmt = "Label_Row{0:00}_Col{0:00}";
    for (var rowIndex = 0; rowIndex < 100; rowIndex++)
    {
        for (var colIndex = 0; colIndex < 100; colIndex++)
        {
            var lblName = String.Format(fmt, rowIndex, colIndex);
            foreach (var ctrl in this.Controls)
            {
                var lbl = ctrl as Label;
                if ((lbl != null) && (lbl.Name == lblName))
                {
                    lbl.Text = null;
                }
            }
        }
    }
}


6

Tôi không thể tin rằng không ai đề xuất điều này:

int i = 9;
i.ToString("D2"); // Will give you the string "09"

hoặc là

i.ToString("D8"); // Will give you the string "00000009"

Nếu bạn muốn hệ thập lục phân:

byte b = 255;
b.ToString("X2"); // Will give you the string "FF"

Bạn thậm chí có thể chỉ sử dụng "C" để hiển thị dưới dạng tiền tệ nếu bạn ký hiệu tiền tệ địa phương. Xem tại đây: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_


5

Bài đăng trên blog này là một cheat-sheet tuyệt vời để bạn có thể sử dụng khi cố gắng định dạng chuỗi thành nhiều định dạng khác nhau.

liên kết đến trojan đã bị xóa

Biên tập

Liên kết đã bị xóa vì Google tạm thời cảnh báo rằng trang web (hoặc trang web có liên quan) có thể đã phát tán phần mềm độc hại. Nó bây giờ đã được đưa ra khỏi danh sách và không còn được báo cáo là có vấn đề. Google "SteveX String Formatting", bạn sẽ tìm thấy kết quả tìm kiếm và bạn có thể truy cập nó theo quyết định của mình.


1
Trang web đó (bây giờ) kích hoạt cảnh báo trojan.
Henk Holterman

0

Bạn cũng có thể làm theo cách này

private static string GetPaddingSequence(int padding)
{
      StringBuilder SB = new StringBuilder();
      for (int i = 0; i < padding; i++)
      {
           SB.Append("0");
      }

      return SB.ToString();
  }

public static string FormatNumber(int number, int padding)
{
    return number.ToString(GetPaddingSequence(padding));
}

Cuối cùng gọi hàm FormatNumber

string x = FormatNumber(1,2);

Đầu ra sẽ là 01 dựa trên tham số đệm của bạn. Tăng nó sẽ tăng số lượng 0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.