Powershell:将双引号内的字符串拆分为数组
给定一个字符串,其中每个路径都用双引号引起来,如何将其拆分为一个数组,每个项目都是双引号内的文字子字符串。例如:Powershell:将双引号内的字符串拆分为数组,powershell,Powershell,给定一个字符串,其中每个路径都用双引号引起来,如何将其拆分为一个数组,每个项目都是双引号内的文字子字符串。例如: $input=read-host "input"; $input.Split(" ") 如果输入字符串为“D:\Path1\file1.txt”“D:\Path2\some[weird,name.txt”“D:\thispath\在quote.txt”之后不被空格分隔,则只要找到空格,不知道引号(但我认为这不是一个单词),它就会分割字符串。我期待这样的输出 D:\Path1\fil
$input=read-host "input"; $input.Split(" ")
如果输入字符串为“D:\Path1\file1.txt”“D:\Path2\some[weird,name.txt”“D:\thispath\在quote.txt”
之后不被空格分隔,则只要找到空格,不知道引号(但我认为这不是一个单词),它就会分割字符串。我期待这样的输出
D:\Path1\file1.txt
D:\Path2\some [ weird, name.txt
D:\thispath\is_not_separated_by_space_after_quote.txt
没有双引号。知道如何实现吗?提前谢谢。编辑
这是一种适合不喜欢使用正则表达式的人的方法,但我相信它应该在这里起作用
$input.Replace('""','" "').replace('" "','","').split(',').replace('"','')
这样,您可以确保每两个相邻的引号之间有一个空格。添加此项后,您的方法应该会起作用?您是否想过-[1]每个
$Read Host
调用只获取一个dir?然后循环,直到使用结果为空为止?//[2]使用windows使用的目录选择器对话框?这个…FolderBrowserDialog类(System.windows.Forms)| Microsoft文档-是的,[1]需要太多的用户交互,我尽量避免这种情况。[2]这在某些情况下有效,但无法实现我要做的,即从多个不同的目录将文件拖放到终端,同时减少用户交互的需要。允许任何用户输入并坚持键入…是错误的公式。[格林]如果可能的话,用户输入将被限制为易于控制的方法。/////但是,处理您选择的问题……是您的问题。如果您不介意的话,那么它是可以的。[grin](也是@Tomek。)不要给!$Input
赋值!恐怕你的方法和我的一样,在两个相邻的引号之间有或没有空格。你编辑的答案确实有效,但需要稍作调整$Input=read host“Input”;$Input.Replace(“,”).Replace(“,”).split(“,”).Replace(“,”).split(“,”).Replace(“,”)
,而不是使用,
作为分隔符,我使用的是|
,因为这在windows中是一个无效的字符作为文件名。:)是的,这很有意义。