Различие между символом. IsDigit () и символ. IsNumber () в C#

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
143
задан Shimmy 26 February 2013 в 09:37
поделиться

2 ответа

Char.IsDigit() подмножество Char.IsNumber().

Некоторые символы, которые являются 'числовыми', но не цифры, включают 0x00b2 и 0x00b3, которые преобразовываются в верхний индекс 2 и 3 ('ВІ' и 'Ві') и глифы, которые являются частями, такими как 'Вј', 'ВЅ', и 'Вѕ'.

Примечание, что существует довольно много символов, что IsDigit() возвраты true для этого не находятся в диапазоне ASCII 0x30 к 0x39, такому как эти тайские символы цифры: 'а№ђ' '๑' 'а№’' 'а№\“' 'а№\”' 'а№\•' 'а№–' 'а№ —' 'а№ ˜' 'а№™'.

Этот отрывок кода говорит Вам, какие кодовые точки отличаются:

static private void test()
{
    for (int i = 0; i <= 0xffff; ++i)
    {
        char c = (char) i;

        if (Char.IsDigit( c) != Char.IsNumber( c)) {
            Console.WriteLine( "Char value {0:x} IsDigit() = {1}, IsNumber() = {2}", i, Char.IsDigit( c), Char.IsNumber( c));
        }
    }
}
147
ответ дан 23 November 2019 в 23:00
поделиться

Я нашел ответ:

Символ. IsNumber () определяет, имеет ли Символ какую-либо числовую категорию Unicode. Это контрастирует с IsDigit, который определяет, является ли Символ основанием 10 цифр.

Верные номера являются членами следующих категорий в UnicodeCategory:

  1. DecimalDigitNumber
    символ Десятичной цифры, то есть, символ в диапазоне 0 до 9. Показанный обозначением Unicode "Без обозначения даты" (число, десятичная цифра). Значение равняется 8.
  2. LetterNumber
    Число, представленное буквой, вместо десятичной цифры, например, Римской цифры для пять, который является "V". Индикатор показан обозначением Unicode "Nl" (число, буква). Значение равняется 9.
  3. OtherNumber
    Число, которое не является ни десятичной цифрой, ни числом буквы, например, часть ВЅ. Индикатор показан обозначением Unicode "Нет" (число, другой). Значение равняется 10.

Заключение

  • Char.IsDigit :
    Допустимые цифры являются членами DecimalDigitNumber категория только.
  • Char.IsNumber :
    Верные номера являются членами DecimalDigitNumber, LetterNumber, или OtherNumber категория.
66
ответ дан 23 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

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