<warning>
Это предполагает академический интерес, конечно, вы должны использовать обратные вызовы, чтобы сделать это ясно и правильно </warning>
Я могу злоупотреблять регулярными выражениями, чтобы иметь два ведущих нуля (.NET flavour):
s = Regex.Replace(s, @".(?=\b\d\b)|(?=\b\d{1,2}\b)", "$&0");
Не работает, если в начале строки есть число. Это работает путем сопоставления ширины 0 перед числом или символа перед числом и замены их на 0.
Мне не повезло, расширив его до трех ведущих нулей, и уж точно не больше.