Mam numery przechowywane w bazie danych, a niektóre mają zero jako pierwszą cyfrę, ponieważ zawsze muszą być pewną ilością cyfr. Mam pole tekstowe, które ma wpisany ten numer, więc robię Convert.ToInt32 (TextBox.Text), który usuwa początkowe zero, jeśli je posiada. Czy ktoś ma jakieś pomysły, jak mogę utrzymać zero, lub dodać go na początek po konwersji?Konwertuj.ToInt32 - Zachowaj poprzednie zero
Odpowiedz
Jedynym sposobem zachowaj poprzednie zera, aby nie przekształcić go w liczbę.
Liczba nie ma żadnych poprzednich zer, ponieważ zawiera tylko wartość, a nie ciąg znaków reprezentujących wartość.
Jeśli chcesz przekonwertować go na liczbę, a następnie przekształcić go z powrotem do łańcucha, odtwarzając poprzedzające zera, można użyć formatu niestandardowego:
string formatted = number.ToString("00000");
Albo dla szeregu dynamicznego cyfr:
string formatted = number.ToString(new String('0', numberOfDigits));
+1 za wyjaśnienie obu opcji, ponieważ najlepsze rozwiązanie zależy od charakteru danych (imo). – Thorarin
Nie jest 'number.ToString(). PadLeft (numberOfDigits, '0')' łatwiejsze? Przynajmniej łatwiejsze do przeczytania powiedziałbym ... :) – Svish
Martwię się wartościami ujemnymi podczas wykonywania dopełnienia w ten sposób. Przykład, twoja opcja PadLeft będzie wyglądała następująco: "00-9" zamiast -009. – Codesleuth
Jeśli chcesz zachować wyściełane zero, zachowaj wartość jako ciąg. Liczby całkowite nie mogą przechowywać informacji o wypełnionych zerach, ponieważ po prostu reprezentują liczbę.
Jeśli konieczne jest sprawdzenie wprowadzonego numeru, należy użyć wartości Int32.TryParse lub dopasować wartość do wartości regular expression (np. "^\d+$"
).
Edit: Oprócz Guffa's answer, można użyć "D" (MSDN) do formatu do określonej liczby znaków (z zerowym obicia, jeśli to konieczne):
string formatted = number.ToString("D5"); // 13 -> 00013
+1, aby uzyskać wskazówki dotyczące specyfikatora formatu dziesiętnego ("D"). Ponieważ pytanie określa 'Convert.ToInt32()', jest to moja osobista preferowana metoda wypełniania wartości. – Codesleuth
należy użyć formatu ciąg dla utrzymania wiodącej zerowy:
int fooValue = Convert.ToInt32(TextBox.Text)
//operations with foo Value
string formatValue = fooValue.ToString("#0000");
sposób Zrobiłbym to, gdy numer zostanie umieszczony w bazie danych, zamiast podawać go pod numer int
, używając string
, używając myint.ToString("0000000")
. Z liczbą 0 to całkowita długość wyściełanej liczby.
To powinno również zadziałać.
123.ToString().PadLeft(5, '0'); // 0
Jak skomentował komentarz Svisha, tworzyłoby to dziwne wyniki z ujemnymi liczbami całkowitymi. – Codesleuth
- 1. Zachowaj poprzednie wyniki "znajdź wszystkie referencje"
- 2. Highcharts - Zachowaj zero wyśrodkowane na osi Y z wartościami ujemnymi
- 3. AtomicInteger: zachowaj nieujemny
- 4. Przywrócić poprzednie zatwierdzenie git?
- 5. Terminal VSCode poprzednie polecenia
- 6. Traktowanie zero jako zero w sumie funkcji
- 7. zero || false i false || zero w Ruby
- 8. Usuń xticks, ale zachowaj xticklabels w MATLAB
- 9. Zachowaj zmienną w ogórku?
- 10. foreach: Zachowaj nazwy
- 11. split(), ale zachowaj ogranicznik
- 12. Zachowaj viewdata na RedirectToAction
- 13. Zachowaj jakość obrazu
- 14. Następujące/Poprzednie przyciski na iPhonie MPMoviePlayerController
- 15. Python - poprzednie i następne wartości wewnątrz pętli
- 16. Jak usunąć poprzednie konto w Heroku
- 17. Czy nowa transakcja odrywa wszystkie poprzednie jednostki?
- 18. Wyczyść poprzednie dane przed wysłaniem żądania.
- 19. jqgrid - postData przesyła poprzednie żądania i dane.
- 20. Push zastępuje poprzednie dane w tablicy
- 21. Wybierz Nth poprzednie rodzeństwo w jQuery?
- 22. Poczekaj, aż poprzednie .append() zostanie zakończone
- 23. Zastąp poprzednie wyjście w notebooku jupyter
- 24. Po wyczyszczeniu localStorage zapamiętuje poprzednie wartości.
- 25. Zainstaluj poprzednie wersje R na ubuntu
- 26. dostać poprzednie i następne pozycje w tablicy
- 27. Nieprawidłowe poprzednie wyrażenie regularne podane przez sed
- 28. Czy minus zero (-0) odpowiada zero (0) w C#
- 29. Czy mnożenie liczb zmiennoprzecinkowych przez zero daje zero?
- 30. Zatrzymaj make jeśli find -exec zwraca zero zero
Jeśli chcesz mieć wiodące zero, na pewno nie chcesz konwertować na Int32? Dlaczego nie zachować tego jako ciąg? –
Nie sądzę, że możesz je zachować. ale możesz sformatować przekonwertowane int, aby wyświetlić je ponownie: http://msdn.microsoft.com/en-us/library/dd260048.aspx –
@Matt Ponieważ typem bazy danych jest Int – Grace