Принудительное использование целых чисел длиной не менее 2 цифр [закрыто]

Из man bash:

set [+ abefhkmnptuvxBCEHPT] [+ o option-name] [arg ...]

-e

Выйти немедленно, если конвейер (который может состоять из одной простой команды), команда подголовника, заключенная в круглые скобки, или одна из команд, выполняемых как часть списка команд, заключенного в фигурные скобки (см. SHELL GRAMMAR выше), выходит с -zero статус. Оболочка не выходит, если неудавшаяся команда является частью списка команд сразу после некоторого времени или до тех пор, пока ключевое слово, часть теста, следующего за зарезервированными словами if или elif, не будет частью любой команды, выполненной в & amp; & amp; & amp; или || список, за исключением команды, следующей за окончательным & amp; & amp; или ||, любая команда в конвейере, но последняя, ​​или если возвращаемое значение команды инвертируется с помощью!. Ловушка ERR, если установлена, выполняется до выхода оболочки. Этот параметр применим к среде оболочки и каждой среде субголома отдельно (см. Выше ОБЩИЕ УСЛОВИЯ ОКРУЖАЮЩЕЙ СРЕДЫ) и может вызывать подоболочки для выхода до выполнения всех команд в подоболочке.

Итак, когда false, он выходит из подоболочки.

См. несколько примеров:

# when `false`, exit. Hence, no `echo ho`
$ ( set -e; echo hi; false; echo ho ) ; echo $?
hi
1

# when `false`, exit. Hence, no `echo hu`
$ ( set -e; echo hi; true; echo ho; false; echo hu ) ; echo $?
hi
ho
1
-12
задан Nick LaMarca 30 August 2010 в 20:06
поделиться

5 ответов

Или, в синтаксисе String.Format (используемом, например, в Console.WriteLine)

string s = String.Format("{0:00}", yourInt);
13
ответ дан 10 September 2019 в 04:27
поделиться

Выполнит ли это то, что вы хотите?

for (int i = -20; i < 100; i++)
{
 string s = i.ToString();
 while (s.Length < 2) s = "0" + s;
 Console.WriteLine(s);
}

Я понимаю, что описанный здесь метод немного грубой силы. Но если бы это сработало, вы могли бы оптимизировать его с помощью повторно используемого массива символов вместо добавления строки.

0
ответ дан 10 September 2019 в 04:27
поделиться
string display = yourInt.ToString("00");
53
ответ дан 10 September 2019 в 04:27
поделиться

Я не понимаю, почему . ToString("00") не сработал. Этот тест удался...

    [TestMethod]
    public void RightPadIntegersWithZero()
    {
        var values = new[] { -100, -20, -1, 0, 1, 5, 10, 100, 567 };
        var expecteds = new[] { "-100", "-20", "-01", "00", "01", "05", "10", "100", "567" };

        for (var i = 0; i < values.Length; i++)
        {
            var value = values[i];
            var expected = expecteds[i];

            var result = value.ToString("00");
            Assert.AreEqual(expected, result);
        }
    }

Вы, должно быть, делаете что-то отличное от того, что описывает ваш вопрос

3
ответ дан 10 September 2019 в 04:27
поделиться

Ваш вопрос немного двусмысленный: отображать где?

В любом случае, вы, вероятно, захотите взглянуть на String.Format.

0
ответ дан 10 September 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: