我知道这个question,但是它无法回答我当前的问题。
我知道当前行为我提供了下一个按下的键:
$Host.UI.RawUI.ReadKey().Character
例如,如果我按1
,我将得到1
。
但这是一个字符串(嗯,实际上是一个字符),我希望数字为整数。
我尝试:
[int]$Host.UI.RawUI.ReadKey().Character
并且:
$Host.UI.RawUI.ReadKey().Virtualkeycode
但是在两行中,如果您按1
,则会得到49
。
我知道我可以做到:
[int]$Host.UI.RawUI.ReadKey().Character - 48
但是我想知道是否还有更好的方法可以做到这一点。例如,如果我想同时获得字母和数字,则-48
的使用会变得有些困难,因为我需要使用一些条件块。
所以,我的问题是:有没有更好的方法来将按下的键(数字)作为整数而不是[int]$Host.UI.RawUI.ReadKey().Character - 48
?
答案 0 :(得分:4)
您可以选择使用System.Int32.Parse
方法:
PS> [int]::Parse
OverloadDefinitions
-------------------
static int Parse(string s)
使用中:
$in = $Host.UI.RawUI.ReadKey().Character
[int]::Parse($in)
如果您认为用户输入的内容不是整数,也可以使用System.Int32.TryParse
:
PS> [int]::TryParse
OverloadDefinitions
-------------------
static bool TryParse(string s, [ref] int result)
使用中:
[int] $out = 0
$in = $Host.UI.RawUI.ReadKey().Character
if ([int]::TryParse($in, [ref]$out)) {
$out
}
else {
Write-Warning 'Non-int entered!'
}
答案 1 :(得分:2)
另一种方法:
<Company>
<Employee>
<EESSN>111111111</EESSN>
<Dependent>
<SSN>222222222</SSN>
</Dependent>
</Employee>
</Company>