基本上我有一个包含名称和姓氏的文件,例如
山姆,安德森
我只想将名称显示的顺序更改为此:
安德森,山姆
这是我的代码:
$variable = Read-Host "would you like the names to be sorted in another way?" 'y,n'
if ($variable -eq 'y') {
$Choice = Read-Host "would you like the names to be sorted based on last or first name?" 'l,f'
if ($Choice -eq 'l') {
$ergebnis | %{"{1}, {0}" -f $_.Split(',')}
}
if ($Choice -eq 'f') {
$ergebnis | %{"{0}, {1}" -f $_.Split(',')}
}
}
运行此$ergebnis | %{"{0}, {1}" -f $_.Split(',')}
会得到
Sam, Anderson
然后我更改职位$ergebnis | %{"{1}, {0}" -f $_.Split(',')}
并得到这个:
Anderson, Sam
有人可以帮我弄清楚为什么从位置1开始时输出中会有空白吗?
$ergebnis
是包含名称的变量。
答案 0 :(得分:3)
正如其他人所指出的那样,您将字符串以逗号分隔,并且仅以逗号分隔,从而保留姓氏前的前导空格。意味着运行"{0}, {1}" -f $_.Split(',')
应该给您带来
Sam, Anderson
在逗号后有2个空格,而"{1}, {0}" -f $_.Split(',')
应该为您提供
Anderson, Sam
在逗号后一个空格,在姓氏前另一个空格。
如前所述,您可以在分割字符串后修剪前导/尾随的whitspace,但这需要PowerShell v3或更高版本,因为它利用member enumeration来调用Trim()
的所有结果Split()
操作。
另一种方法是将-split
运算符与正则表达式配合使用,该正则表达式在模式中包括空格,字符串用来分隔空格。这样,逗号之前或之后的空格将被自动删除。为了达到良好的效果,您可以Trim()
在分割字符串之前$ergebnis | ForEach-Object { "{0}, {1}" -f ($_.Trim() -split '\s*,\s*') }
删除字符串开头或结尾的虚假空格。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, nCode_analysis_set_up):
nCode_analysis_set_up.setFixedSize(350, 200)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
nCode_analysis_set_up = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(nCode_analysis_set_up)
nCode_analysis_set_up.show()
sys.exit(app.exec_())
答案 1 :(得分:2)
因为要在包含空格的逗号处分割。您应该使用.Trim(),如下所示:
$ergebnis | %{"{1}, {0}" -f $_.split(',').Trim()}
答案 2 :(得分:2)
使用.split()
方法或-split
运算符进行拆分的另一方面是,
这样,当仅使用结果的索引[0,1]时,如果有多个逗号,则最终只会得到部分输入。
两个变体都有一个参数来限制分割的数量。
在离开标题的同时,您也可以使用-join
运算符
重新颠倒零件顺序:
$Neues_Ergebnis = $Ergebnis | ForEach-Object {($_.Trim() -split '\s*,\s*',2)[1,0] -join ', '}