给定一个字符串,其中每个路径都在双引号内引用,我如何将其拆分为一个数组,每个项目都是双引号内的文字子串。例如:
$input=read-host "input"; $input.Split(" ")
对于"D:\Path1\file1.txt" "D:\Path2\some [ weird, name.txt""D:\thispath\is_not_separated_by_space_after_quote.txt"
的输入字符串,只要找到空格,它就会拆分字符串,而不是引号感知的(尽管不认为这是一个单词)。
D:\Path1\file1.txt
D:\Path2\some [ weird, name.txt
D:\thispath\is_not_separated_by_space_after_quote.txt
没有双引号。有什么想法如何实现这一点吗?提前感谢。
3条答案
按热度按时间tpgth1q71#
这是为那些不喜欢使用正则表达式的人准备的方法,但我相信它在这里应该可以工作。
你要确保每两个相邻的引号之间有一个空格,加上这个空格,你的方法应该可以了吧?
gr8qqesn2#
使用
-split
和regex的替代方案:详情请参见https://regex101.com/r/lKyxJ0/1。
kadbb4593#
对于所有可能的字符串组合,这些答案都没有像我预期的那样工作,引号和not的混合很难处理。最后放弃并使用cmd,因为它已经准备好了这样做。我知道这是一个copout,但实际上应该有一个commandlet来做这件事。$input将是所有参数的数组。