Тип данных кэша приложений Google App и способ преобразования в строку

Я отправляю этот второй ответ, потому что думаю, что у меня самый эффективный алгоритм для всех (спасибо за помощь Atul):)

void Main()
{
    Console.WriteLine (ReorderInt32Digits2(2927466));
    Console.WriteLine (ReorderInt32Digits2(12492771));      
    Console.WriteLine (ReorderInt32Digits2(-1024));
}

public static int ReorderInt32Digits2(int v)
{
    bool neg = (v < 0);
    int mult = neg ? -1 : 1;
    int result = 0;
    var counts = GetDigitCounts(v);
    for (int i = 0; i < 10; i++)
    {
        int idx = neg ? 9 - i : i;
        for (int j = 0; j < counts[idx]; j++)
        {
            result += idx * mult;
            mult *= 10;         
        }
    }
    return result;
}

// From Atul Sikaria's answer
public static int[] GetDigitCounts(int n)
{
    int v = Math.Abs(n);
    var result = new int[10];
    while (v > 0) {
        int digit = v % 10;
        v = v / 10;
        result[digit]++;
    }
    return result;
}
1
задан Rubén 13 July 2018 в 20:23
поделиться

1 ответ

В вашем случае тип возвращаемого значения - это строка.

Как насчет этого ответа? Он предполагает, что «привет» вводится в текстовое поле. В этом случае, когда длина form.text of receiveText(form) будет восстановлена, длина равна 6. Длина «привет» равна 5. Каждый код символа равен [32,104,101,108,108,111]. А именно, верхняя буква - это пространство. Таким образом, if(x=="hello") всегда ложно. Чтобы удалить эту проблему с помощью вашего скрипта, пожалуйста, измените для receiveText(form) следующим образом.

От:

var nameBox = form.text;

Кому:

var nameBox = form.text.trim();

Примечание:

  • Я думаю, что для вашей ситуации есть несколько решений, поэтому, пожалуйста, подумайте об этом как о одном из них.
  • Поскольку google.script.run является асинхронным, когда вы получите значение из CacheService после того, как вы поместите значение, следующий сценарий может быть лучше.
Пример
google.script.run.withSuccessHandler(function() {
  google.script.run.withSuccessHandler(onSuccessed).items();
}).receiveText(document.forms[0]);

Ссылка:

2
ответ дан Tanaike 17 August 2018 в 12:20
поделиться
Другие вопросы по тегам:

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