根据提供的答案修订工作:
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> Get-Content ./case.csv | ForEach-Object ToUpper
FJKDLA,W
FKDSLAJF,FDJK;A
NLK;NBF;SDJF,DGDF
VNL;KKDF,BGNGFN
NVCL;V,RGS
NVKL;,THRN
VLKDF,TMMJYMF
FJDK,FDJK;A
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> Get-Content ./case.csv | ForEach-Object ToLower
fjkdla,w
fkdslajf,fdjk;a
nlk;nbf;sdjf,dgdf
vnl;kkdf,bgngfn
nvcl;v,rgs
nvkl;,thrn
vlkdf,tmmjymf
fjdk,fdjk;a
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $TextInfo = (New-Object System.Globalization.CultureInfo("en-US")).TextInfo;
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> Get-Content ./case.csv | ForEach-Object ToTitleCase
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> pwsh --version
PowerShell 7.3.4
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 23.04
Release: 23.04
Codename: lunar
PS /home/nicholas/powershell>
我主要关心的是更多地转换为TitleCase,理想情况下,从REPL控制台而不是脚本文件。我还没能更新针对某个特定栏目的工作。
我所说的REPL控制台指的是交互式shell,如果这有意义的话。
所有的答案和评论都非常有帮助和赞赏。
附加信息:
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> Get-Culture
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> (Get-Culture).TextInfo.ToTitleCase($_.fjkdla)
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> (Get-Culture).TextInfo.ToTitleCase("hmm")
Hmm
PS /home/nicholas/powershell>
它看起来是单个字符串的所需输出。但是,我不知道如何从控制台迭代上面的CSV文件。
3条答案
按热度按时间u1ehiz5o1#
Import-Csv
,需要使用 OO 方法,如下一节所示。Import-Csv
的-Header
参数手动提供列名,例如:Import-Csv ./case.csv -Header Name, Value
。ForEach-Object
脚本块中引用这些列名,如下所示(例如,$_.Name
)Get-Content
对CSV文件进行 * 纯文本 * 处理,似乎试图将 * 所有 * 列值转换为标题大小写;为此,采用以下方法:原始OO问题的答案:
要在单个管道中将 * 单个已知 * 列转换为标题大小写,请确保使用其 * 确切的名称*(尽管大小写无关紧要);以示例CSV的第一列名称为例:
输出从CSV文件解析的修改对象并直接输出;默认情况下,它们会打印到屏幕上;例如,将
$csv =
前置到流水线,以在变量$csv
中捕获其输出。注意事项:
$csv
中,那么iRon's建议是一个简单有效的解决方案,使用内在的.ForEach()
方法:要有条理地将 all 列转换为title case,而不需要提前知道列(属性)的值,使用内在的
psobject
属性:注意事项:
Get-Culture
以不仅为每个对象获得标题大小写方法,而且在最后一种情况下,还为每个对象的每个属性获得标题大小写方法,这是低效的。性能更好的替代方法,缓存一个方法的引用,然后用
.Invoke()
调用:fcipmucu2#
Replit PowerShell控制台上似乎不存在Get-Culture PowerShell cmdlet。它有一个TextInfo方法,可以用来获取Title Case,如@mklement所示。下面的代码在Replit控制台中为我工作。
CSV文件:
REPLIT控制台代码:
输出:
cdmah0mi3#
这似乎起作用:
至少对我来说是这样。使用不同的PC。