仅替换文件名中第一个出现的字符

时间:2015-09-06 20:01:52

标签: powershell file-rename batch-rename

我有一个包含许多文件的文件夹。我想要的是替换每个文件的第一个匹配字符。例如,我有

aazbc.txt
aaazbxx.txt
aaczbbv.txt

我想替换第一个" b"用" z"结果将是

Dir | Rename-Item -NewName { $_.name -replace "b","a" }

所以只有第一场比赛将被替换为我试过的

private void listaAvvio() {
    SQLiteDatabase db = new DatabaseHelper(getActivity()).getReadableDatabase();
    final List<Dettaglio1> dettagli1 = new ArrayList<Dettaglio1>();
    String tabella_op = "SELECT .....";
    Cursor cur = db.rawQuery(tabella_op, null);
    while (cur.moveToNext()) {
        Dettaglio1 d1 = new Dettaglio1();
        d1.id = cur.getString(0);
        d1.FIELD1= cur.getString(1);
        d1.FIELD2= cur.getString(2);
        d1.FIELD3= cur.getString(3);
        d1.NUMBER_OF_SINGLE_ROW++;
        dettagli1.add(d1);
    }
    cur.close();
    db.close();
    ...
}

但它取代了所有的&#34; b&#34;在文件名中。

1 个答案:

答案 0 :(得分:4)

这样的事情应该有效:

Dir | Rename-Item -NewName { $_.name -replace '^(.*?)b', '$1z' }

诀窍是在匹配模式中包含最短匹配到第一个b((.*?)),并通过将其替换为自身($1)将其保留在替换中。