我想要一个正则表达式,以便用文件名的扩展名替换包含特殊字符和点(.)等的文件名和下划线(_).
帮我一个正则表达式
我必须创建一个可以钻入特定驱动器的应用程序,读取所有文件名并用下划线替换非法SharePoint字符.我指的非法字符是: ~ # % & * {} / \ | : <> ? - ""
有人可以提供代码链接或代码本身如何做到这一点?我对C#非常陌生,需要我能得到的所有帮助.我已经研究了递归钻取驱动器的代码,但我不知道如何将字符替换和递归循环放在一起.请帮忙!
根据http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars%28v=vs.110%29.aspx Path.GetInvalidFileNameChars()应该给出以下输出
// Note: Some characters may not be displayable on the console.
// The output will look something like:
//
// The following characters are invalid in a path:
// Char Hex Value
// ", 0022
// <, 003C
// >, 003E
// |, 007C
// ...
//
// The following characters are invalid in a filename:
// Char Hex Value
// ", 0022
// <, 003C
// >, 003E
// |, 007C
// ...
Run Code Online (Sandbox Code Playgroud)
然而我只是得到
Char …Run Code Online (Sandbox Code Playgroud) 我想用 string.Empty 替换这些字符:'"<>?*/\| 在给定的文件名中如何使用正则表达式来做到这一点我试过这个:
Regex r = new Regex("(?:[^a-z0-9.]|(?<=['\"]))", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
FileName = r.Replace(FileName, String.Empty);
Run Code Online (Sandbox Code Playgroud)
但这会用 String.Empty 替换所有特殊字符。
我是visual basic的新手,我正在尝试使用此代码创建一个文件
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim curboard As String = comboard.SelectedItem
Dim curstd As String = comstd.SelectedItem
Dim curdiv As String = comdiv.SelectedItem
Dim curmed As String = commed.SelectedItem
Dim filepath As String = "c:\program files\School Attandance Management System 1.0\data\" & curdiv & ".samsclass"
Try
File.Create(filepath)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
这输出
路径中的Illigal字符
comdiv,comstd,commed和comboard是comboboxes请让我知道如何将变量连接到filepath?
我需要创建一些名称如下的日志文件:HH:mm_dd-MM-yyyy.log
我试图转换DateTime和DateTime.Now像这样,但编译器遇到下一个错误:
The given path's format is not supported.
Run Code Online (Sandbox Code Playgroud)
代码我尝试过:
#1
var currentDateTime = DateTime.Now;
string format = "HH:mm_dd-MM-yyyy";
string datetime = currentDateTime.ToString(format);
File.Create("Log/GameLog/"+datetime+".log");
#2
string datetime = DateTime.Now.ToString("HH:mm_dd-MM-yyyy");
File.Create("Log/GameLog/"+datetime+".log");
Run Code Online (Sandbox Code Playgroud)
在这几种情况下,编译器引发了同样的错误......所以最后,我的问题是,我如何使用datetime作为文件名?
我想用 c# (VS2012) 中的 ZipFile 类解压缩文件。即使我直接从 win explorer 复制路径,我也会收到此错误:
System.ArgumentException: Illegales Zeichen im Pfad。bei System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) bei System.IO.Path.GetFileName(String path) bei System.IO.Compression.ZipHelper.EndsWithDirChar(String test) bei System.IO.Compression.ZipArchiveEntry。 set_FullName(字符串值)
在 System.IO.Compression.ZipArchiveEntry..ctor(ZipArchive archive, ZipCentralDirectoryFileHeader cd) 在 System.IO.Compression.ZipArchive.ReadCentralDirectory() 在 System.IO.Compression.ZipArchive.get_Entries() 在 System.IO.Compression.ZipFileExtensions .ExtractToDirectory(ZipArchive source, String destinationDirectoryName) bei System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName, Encoding entryNameEncoding) bei System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName) beiWindowsFormsApplication1。 .buttonStartNxtOSEK_Click(Object sender, EventArgs e) in d:\C#\nxtOSEKInstaller\nxtOSEKSetup\WindowsFormsApplication1\Form1.cs:Zeile 192。
代码:
string zipPath = @"D:\C#\nxtOSEKInstaller\nxtOSEKSetup\WindowsFormsApplication1\bin\Debug\res\package.zip";
string extractPath = @"D:\testcyginstall\cygwin";
textBoxProgress.AppendText("Entpacke .... ");
try {
ZipFile.ExtractToDirectory(zipPath, extractPath);
} catch …Run Code Online (Sandbox Code Playgroud)