под 'nvarchar datatype' я предполагаю, что вы имеете в виду строку.
Ray
А 'C £' означает 'C #' ...
T30
Ответы:
151
Это действительно зависит от длины NVARCHAR, поскольку некоторые из вышеперечисленных (особенно те, которые конвертируются через IntXX) не будут работать:
String s ="005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Как то так
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(newChar[]{'0'});// s = "58757843950000120465875468465874567456745674000004000"
Предположим, что строка очень длинная, зачем обрезать ее дважды? вы можете сохранить обрезанную строку в переменной
avrahamcool
@avrahamcool, что ты имеешь в виду, где он обрезается дважды? Спасибо за комментарий.
msysmilu
ах, @avrahamcool, может, поэтому я его отредактировал :) в конце концов, это вопрос памяти и времени вычислений; я думаю, что сегодня память больше не проблема для такого рода приложений
Возможно, это излишек для поставленного вопроса, это решение, которое я ищу, поскольку оно также позволяет удалять нули с правым заполнением для десятичных чисел. (Decimal.TryParse)
winwaed
@JK Я знаю, что пост старый, но мне очень нравится это решение, так как оно чистое и очень простое для понимания. Только один вопрос, изменяющий текст в событии нажатия клавиши, также вызовет событие измененного текста - я прав?
Кен,
3
Это регулярное выражение позволяет избежать неправильного результата с цифрами, которые состоят только из нулей «0000», и работают с цифрами любой длины:
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
Nic3500
Улучшен ответ в соответствии с предложением от @ Nic3500
Ответы:
Это действительно зависит от длины NVARCHAR, поскольку некоторые из вышеперечисленных (особенно те, которые конвертируются через IntXX) не будут работать:
Как то так
источник
strInput= "0000000";
или подобное. потому что он вернет пустую строку вместо одного нуля."0"
если после обрезки она пуста. Или используяPadLeft(1, '0')
.Это код, который вам нужен:
источник
strInput= "0000000";
или подобноеstrInput.TrimStart('0').PadLeft(1, '0');
справлюсь"0000" > "0"
.Код, чтобы избежать возврата пустой строки (когда ввод похож на «00000»).
источник
return numberString.TrimStart('0');
источник
numberString= "0000000";
или похожеTryParse работает, если ваше число меньше Int32.MaxValue . Это также дает вам возможность обрабатывать плохо отформатированные строки. То же самое для Int64.MaxValue и Int64.TryParse .
источник
Это регулярное выражение позволяет избежать неправильного результата с цифрами, которые состоят только из нулей «0000», и работают с цифрами любой длины:
И это регулярное выражение удалит ведущие нули в любом месте строки:
источник
Использование следующего вернет один 0, когда все входные данные равны 0.
источник
источник