oleh 'nvarchar datatype' Saya menganggap Anda maksud string.
Ray
Dan 'C £' adalah singkatan dari 'C #' ...
T30
Jawaban:
151
Ini benar-benar tergantung pada berapa lama NVARCHAR, karena beberapa metode di atas (terutama yang mengkonversi melalui IntXX) tidak akan bekerja untuk:
String s ="005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Sesuatu seperti ini akan melakukannya
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(newChar[]{'0'});// s = "58757843950000120465875468465874567456745674000004000"
mari kita asumsikan bahwa string sangat panjang, mengapa memotongnya dua kali? Anda dapat menyimpan string yang dipangkas dalam variabel
avrahamcool
@avrahamcool, apa maksudmu, di mana dipangkas dua kali? Terima kasih atas komentarnya.
msysmilu
ah, @avrahamcool, mungkin itu sebabnya saya mengeditnya :) pada akhirnya itu adalah memori pertanyaan vs waktu komputasi; Saya kira hari ini memori tidak lagi menjadi masalah dalam jenis aplikasi ini
Mungkin berlebihan untuk pertanyaan yang diajukan, ini adalah solusi yang saya cari karena juga memungkinkan untuk menghilangkan nol-padded yang tepat untuk desimal. (Decimal.TryParse)
dimenangkan
@ JK Saya tahu posnya sudah tua tapi saya sangat suka solusi ini karena bersih dan sangat mudah dimengerti. Hanya satu pertanyaan mengubah teks dalam acara pers utama juga akan memecat acara yang diubah teks - apakah saya benar?
Ken
3
Regex ini memungkinkan Anda menghindari hasil yang salah dengan digit yang hanya menerima dari nol "0000" dan bekerja pada digit dengan panjang berapa pun:
Sementara kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang bagaimana dan / atau mengapa memecahkan masalah akan meningkatkan nilai jangka panjang jawaban.
Jawaban:
Ini benar-benar tergantung pada berapa lama NVARCHAR, karena beberapa metode di atas (terutama yang mengkonversi melalui IntXX) tidak akan bekerja untuk:
Sesuatu seperti ini akan melakukannya
sumber
strInput= "0000000";
atau serupa. karena itu akan mengembalikan string kosong daripada satu nol."0"
jika kosong setelah trim. Atau menggunakanPadLeft(1, '0')
.Ini adalah kode yang Anda butuhkan:
sumber
strInput= "0000000";
atau serupastrInput.TrimStart('0').PadLeft(1, '0');
akan menangani"0000" > "0"
.Kode untuk menghindari pengembalian string kosong (ketika input seperti "00000").
sumber
return numberString.TrimStart('0');
sumber
numberString= "0000000";
atau serupaTryParse berfungsi jika nomor Anda kurang dari Int32.MaxValue . Ini juga memberi Anda kesempatan untuk menangani string yang berformat buruk. Bekerja sama untuk Int64.MaxValue dan Int64.TryParse .
sumber
Regex ini memungkinkan Anda menghindari hasil yang salah dengan digit yang hanya menerima dari nol "0000" dan bekerja pada digit dengan panjang berapa pun:
Dan regex ini akan menghapus nol terkemuka di mana saja di dalam string:
sumber
Menggunakan berikut ini akan mengembalikan 0 tunggal ketika input semua 0.
sumber
sumber