Как в PowerShell проверить, содержит ли переменная числовое значение?

Вам не нужна эта строка. Вам также не нужен конструктор, потому что вы используете его по умолчанию. Просто создайте экземпляр класса напрямую:

public static void main(String[] args) throws Exception {
        Class<?> someClass = Class.forName(args[0]);
        Creator<String> creator = (Creator<String>) someClass.newInstance();
}

Если вы настаиваете, вы сможете получить только половину:

public static void main(String[] args) throws Exception {
    Class<?> someClass = Class.forName(args[0]);
    Class<? extends Creator> creatorClass = someClass.asSubclass(Creator.class);
    Constructor<? extends Creator> creatorCtor = creatorClass.getConstructor((Class<?>[]) null);
    Creator<String> creator = (Creator<String>) creatorCtor.newInstance((Object[]) null);
}
23
задан Damian Powell 7 June 2012 в 08:09
поделиться

5 ответов

Вы можете проверить, является ли переменная числом следующим образом: $val -is [int]

Это будет работать для числовых значений, но не в том случае, если число заключено в кавычки:

1 -is [int]
True
"1" -is [int]
False
33
ответ дан tophatsteve 7 June 2012 в 08:09
поделиться

Вы можете сделать что-то вроде:

$testvar -match '^[0-9]+ 

или

$testvar -match '^\d+ 

Возвращает «True», если $ testvar - это число

Возвращает «True», если $ testvar - это число

или

$testvar -match '^\d+ 

Возвращает «True», если $ testvar - это число

Возвращает «True», если $ testvar - это число

14
ответ дан Matt 7 June 2012 в 08:09
поделиться

Для операторов -is и -as требуется тип, с которым можно сравнивать. Если вы не уверены, каким может быть тип, попробуйте оценить содержимое (частичный список типов):

(Invoke-Expression '1.5').GetType().Name -match 'byte|short|int32|long|sbyte|ushort|uint32|ulong|float|double|decimal'

Хорошо это или плохо, он также может работать с шестнадцатеричными значениями (Invoke-Expression '0xA '...)

8
ответ дан Shay Levy 7 June 2012 в 08:09
поделиться

Спасибо всем, кто внес свой вклад в эту тему и помог мне понять, как проверить числовые значения. Я хотел опубликовать свои результаты о том, как обрабатывать отрицательные числа, для тех, кто также может найти эту тему при поиске ...

Примечание: моя функция требует передачи строки из-за использования Trim ().

function IsNumeric($value) {
# This function will test if a string value is numeric
#
# Parameters::
#
#   $value   - String to test
#
   return ($($value.Trim()) -match "^[-]?[0-9.]+$")
}
2
ответ дан edwdecarlo 7 June 2012 в 08:09
поделиться
filter isNumeric {
    [110] 

-

1 -is [ValueType]
True
"1" -is [ValueType]
False

-

function isNumeric ($Value) {
    return $Value -is [ValueType]
}

isNumeric 1.23
True
isNumeric 123
True
isNumeric ""
False
isNumeric "asdf123"
False

-

(Invoke-Expression '1.5') -is [ValueType]
-is [ValueType] }

-

1 -is [ValueType]
True
"1" -is [ValueType]
False

-

function isNumeric ($Value) {
    return $Value -is [ValueType]
}

isNumeric 1.23
True
isNumeric 123
True
isNumeric ""
False
isNumeric "asdf123"
False

-

(Invoke-Expression '1.5') -is [ValueType]
1
ответ дан Aaron 7 June 2012 в 08:09
поделиться
Другие вопросы по тегам:

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