Century10 的密码是桌面上文件中的第 161 个单词。
注:-密码将是小写的,无论它如何出现在屏幕上。
* 上面的问题是我面临的挑战。我尝试了的命令。*
Get-Content C:\Users\Century9\Desktop\Word_File.txt | Select-Object -Index 161
结果是 nil。我知道我需要为字符串分配一个值,因为它现在被视为一个整体实体。
如果感兴趣的标记是文件中的第 161 个单词,请使用以下方法,将文件拆分为单词,而不考虑换行符[1]:
$pass = (-split (Get-Content -Raw Word_File.txt))[160]
如果要将令牌转换为全小写,则追加.ToLower()
。
请注意,上面使用-Raw
将整个文件作为单个字符串加载到内存中。
由于数组索引是基于0
的,因此返回第 161 个元素的是 index[160]
。
-split
operator的一元形式通过空格将输入拆分为令牌数组。
注意:如果您想按正则表达式上下文中构成单词的更严格定义进行拆分,请改用以下内容:
$pass = ((Get-Content -Raw Word_File.txt) -split '\W+' -ne '')[160]
[1]如果您的输入文件在其自己的行中包含每个单词:
您的解决方案在正确的轨道上,除了您应该将160
传递给Select-Object -Index
,因为-Index
参数需要0
基于索引,而不是1
基于行号:
# Extract the 161st line.
$pass = Get-Content Word_File.txt | Select-Object -Index 160
要转换为小写:
$pass = (Get-Content Word_File.txt | Select-Object -Index 160).ToLower()
如果输入文件的少于161 行(带有错误消息You cannot call a method on a null-valued expression
),则上述操作将失败。
如果您希望安静地接收无输出,请使用以下内容(为简洁起见,它使用内置别名select
表示Select-Object
,使用foreach
表示ForEach-Object
):
$pass = Get-Content Word_File.txt | select -Index 160 | foreach ToLower
尝试运行此:
((Get-Content -Path C:\Users\Century9\Desktop\Word_File.txt -TotalCount 161)[-1]).ToLower()
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(24条)