String 基于文本行的变量和数组

String 基于文本行的变量和数组,string,powershell,variables,String,Powershell,Variables,我试图读取的文件如下面的示例所示 variable, arrElement1, arrElement2, arrElemen3, arrelement[n]... variable, arrElement1, arrElement2, arrElemen3, arrelement[n]... . . . variable, arrElement1, arrElement2, arrElemen3, arrelement[n]... 我试图实现的是读取此文件并将“variable”指定为一个元素

我试图读取的文件如下面的示例所示

variable, arrElement1, arrElement2, arrElemen3, arrelement[n]...
variable, arrElement1, arrElement2, arrElemen3, arrelement[n]...
.
.
.
variable, arrElement1, arrElement2, arrElemen3, arrelement[n]...
我试图实现的是读取此文件并将“variable”指定为一个元素变量 和arElement作为元素数组

诸如此类:

:伪代码:

foreach (line in text file)
   $variable=variable
   $array = "arrElement1", "arrElement2", "arrElement3", ....
   foreach( $element in $array) {
      'do some stuff'
   }

提前谢谢你

像这样的事情应该会奏效:

获取内容“C:\your.txt”|%{
$arr=$\分割'\s*,\s*'
新变量-名称$arr[0]-值$arr[1..$arr.Length]
}
编辑:根据您的伪代码,您打算将第一个字段保留在一个变量中,将其余字段作为数组保留在第二个变量中。这更容易实现:

获取内容“C:\your.txt”|%{
$var,$arr=$\u-split'\s*,\s*'
$arr |%{
#做事
}
}

哦,这看起来很简单。一开始,我想用所有元素创建一个数组,并执行for循环(从数组中的第二个元素开始)@沃尔特,你能评论一下你的一行代码吗。我不确定那里到底发生了什么$var,$arr=$\u-split'\s*,\s*'在我看来像正则表达式。。就不能是","吗?"?感谢you@hermitagup名字是安斯加,不是沃尔特。是的,您也可以使用
-split','
而不是
-split'\s*,\s*'
。但是,如果这样做,数组值将保留逗号之前/之后的所有空白。例如,像这样拆分一个字符串
“a,b”
,将生成一个包含两个字符串
“a”
(带尾随空格)和
“b”
(带前导空格)的数组。拆分regexp中的
\s*
阻止了这一点。@Ansgar,真的很抱歉这个错误。谢谢你给我解释那部分。我完全同意你聪明的解决办法。有一个很好的代码。@AnsgarWiechers:这里最好使用
[]*
(仅限ascii空格)而不是
\s*
(所有unicode空格):为了加快性能并避免匹配
\n
\f
等,或者另一个解决方案是避免使用
\s*
并使用
Trim()
@walidtoumi您需要相当大的文件才能成为性能问题。使用100万行的输入文件和每行8个字段进行的快速测试表明,在
\s*、\s*
(每行1:25)处拆分没有任何显著差异。从磁盘读取数据所需的时间比这要长得多。