Установить ограничение размера для параметра запроса

Расширяясь по нескольким предыдущим ответам и используя методы расширения, я пришел к следующему: у него нет оговорок потенциального множественного перечисляемого перечисления или проблем производительности, связанных с использованием нескольких объектов регулярных выражений, или вызова регулярного выражения (/ g0)

Селектор поддерживает типичную типизацию, позволяющую назначать любого делегата, элементы в исходной коллекции мутируются. Это означает, что он использует ToList (), что может отрицать преимущества в больших коллекциях.

селектором, затем преобразуется в строки с помощью ToString ().

    private static readonly Regex _NaturalOrderExpr = new Regex(@"\d+", RegexOptions.Compiled);

    public static IEnumerable<TSource> OrderByNatural<TSource, TKey>(
        this IEnumerable<TSource> source, Func<TSource, TKey> selector)
    {
        int max = 0;

        var selection = source.Select(
            o =>
            {
                var v = selector(o);
                var s = v != null ? v.ToString() : String.Empty;

                if (!String.IsNullOrWhiteSpace(s))
                {
                    var mc = _NaturalOrderExpr.Matches(s);

                    if (mc.Count > 0)
                    {
                        max = Math.Max(max, mc.Cast<Match>().Max(m => m.Value.Length));
                    }
                }

                return new
                {
                    Key = o,
                    Value = s
                };
            }).ToList();

        return
            selection.OrderBy(
                o =>
                String.IsNullOrWhiteSpace(o.Value) ? o.Value : _NaturalOrderExpr.Replace(o.Value, m => m.Value.PadLeft(max, '0')))
                     .Select(o => o.Key);
    }

    public static IEnumerable<TSource> OrderByDescendingNatural<TSource, TKey>(
        this IEnumerable<TSource> source, Func<TSource, TKey> selector)
    {
        int max = 0;

        var selection = source.Select(
            o =>
            {
                var v = selector(o);
                var s = v != null ? v.ToString() : String.Empty;

                if (!String.IsNullOrWhiteSpace(s))
                {
                    var mc = _NaturalOrderExpr.Matches(s);

                    if (mc.Count > 0)
                    {
                        max = Math.Max(max, mc.Cast<Match>().Max(m => m.Value.Length));
                    }
                }

                return new
                {
                    Key = o,
                    Value = s
                };
            }).ToList();

        return
            selection.OrderByDescending(
                o =>
                String.IsNullOrWhiteSpace(o.Value) ? o.Value : _NaturalOrderExpr.Replace(o.Value, m => m.Value.PadLeft(max, '0')))
                     .Select(o => o.Key);
    }
1
задан Marvin Klar 19 March 2019 в 09:41
поделиться

3 ответа

Кажется, что Java не может обрабатывать слишком большое число, например, int или long, поэтому обрабатываете как string и используете свойство length для обработки и разбора на int или long.

Примечание: если длина строки слишком велика, чем может поддерживать целое или длинное, используйте функцию возврата или любую функцию обратного вызова.

Диапазон переменных Java: -

enter image description here

0
ответ дан Bathri Nathan 19 March 2019 в 09:41
поделиться

Здесь описано, как генерировать пользовательские ошибки. Я бы предложил принять String как value для идентификатора пользователя. Когда синтаксический анализ value не удался, вы можете выдать свою пользовательскую ошибку.

0
ответ дан Marvin Klar 19 March 2019 в 09:41
поделиться
  1. Измените входной параметр (id) этого метода службы покоя с Long на String
    , затем проверьте длину строки и выполните ли здесь проверку
  2. Затем преобразуйте это строковое значение в long, как показано ниже:

    Long idValue = Long.valueOf(Id);

    добавьте существующий код здесь

  3. [ 119]
0
ответ дан TheSprinter 19 March 2019 в 09:41
поделиться
Другие вопросы по тегам:

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