ホーム>source

現在、次のコードを使用して、定義したディレクトリ内のファイル名から定義した特殊文字と空白を削除しています。

<前>ウィズウィズ

編集:新しいファイル名(newName)の文字を最初の26文字を除くすべてにトリミングするにはどうすればよいですか?

回答:

<前>ウィズウィズ For Each file As FileInfo In files newName = Regex.Replace(file.Name, "[!@#$%^&*()_ ]", "") If (file.Name <> newName) Then newPath = Path.Combine(dir, newName) file.CopyTo(newPath) End If Next
あなたの答え
  • 解決した方法 # 1

    Linqは次のように使用できます。

    ウィズウィズ
    

    次の名前のファイルがあるとします。

    <前>ウィズウィズ

    newPathの出力は次のようになります。

    <前>ウィズウィズ

    それがあなたがしなければならないことなら。


    編集:

    RegExを使用した代替:

    ウィズウィズ
    

    だから Dim dir = "c:\myFolder" Dim except = "[!@#$%^&*()_ ]".ToArray For Each file As FileInfo In files Dim maxLen As Integer = 26 - file.Extension.Length Dim newPath = Path.Combine(dir, $"{New String(Path.GetFileNameWithoutExtension(file.Name). ToCharArray. Except(except). Take(maxLen). ToArray)}{file.Extension}") file.CopyTo(newPath, True) Next  次の名前のファイルの場合:

    <前>ウィズウィズ

    ...は:

    <前>ウィズウィズ

    不要な文字が削除され、新しいファイル名の最大長( abcdefg_hijk!lm@pno#pq%r(stuvy)x$z.dbf )拡張子を含めて26です。

    これがregex101の例です。

    繰り返しますが、それが必要な場合です。幸運を。

  • 解決した方法 # 2

    String.Removeを使用

    <前>ウィズウィズ

    ご了承ください: 文字列の長さは26以上である必要があります

    編集:
    拡張機能を残したい場合。代わりにこれを使用してください:

    <前>ウィズウィズ

  • 解決した方法 # 3

    ファイル名を変更するには c:\myFolder\abcdefghijklmpnoqrstuv.dbf を使用できます  方法。 ドキュメントから:

    ウィズウィズ

    おそらく「名前」部分のみの名前を変更して、拡張子を変更しないようにします。
    このアプローチは、任意のファイル拡張子(3文字の拡張子だけでなく)をサポートします

    <前>ウィズウィズ

  • 解決した方法 # 4

    文字列のサブセットを取得する方法を尋ねている場合は、部分文字列を取得します。最初の26文字が必要な場合は、2番目のオーバーロードになります。

    例:

    <前>ウィズウィズ

    ライブデモ:フィドル

    更新

    あなたのコメントに従って、拡張子なしのファイル名だけを削除する方法は次のとおりです。

    <前>ウィズウィズ

    ライブデモ:フィドル

    Dim except = "[!@#$%^&*()_ ]" For Each file As FileInfo In files Dim maxLen As Integer = 26 - file.Extension.Length Dim newName = $"{Regex.Replace(Path.GetFileNameWithoutExtension(file.Name), except, "").Substring(0, maxLen)}{file.Extension}" Dim newPath = Path.Combine(dir, newName) file.CopyTo(newPath, True) Next

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Azure Resource Manager(ARM)テンプレートを介してSQL Serverを作成する