programing

파일 이름 문자열에서 파일 확장자 제거

muds 2023. 4. 21. 21:31
반응형

파일 이름 문자열에서 파일 확장자 제거

만약 제가 이 말을 한다면요'"abc.txt"substring을 빠르게 취득할 수 있는 방법이 있습니까?"abc"?

나는 할 수 없다fileName.IndexOf('.')파일명은 다음과 같을 수 있습니다."abc.123.txt"내선번호를 없애고 싶다(즉, 내선번호가 없다)."abc.123").

이 메서드는 이름에서 알 수 있듯이 확장자를 사용하지 않고 인수로 전달되는 파일 이름을 제공합니다.

이 목적을 위한 프레임워크에는 확장을 제외한 전체 경로를 유지하는 메서드가 있습니다.

System.IO.Path.ChangeExtension(path, null);

파일 이름만 필요한 경우

System.IO.Path.GetFileNameWithoutExtension(path);

사용할 수 있습니다.

string extension = System.IO.Path.GetExtension(filename);

그런 다음 확장을 수동으로 제거합니다.

string result = filename.Substring(0, filename.Length - extension.Length);

String.LastIndexOf는 동작합니다.

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);

내선번호 없이 풀패스를 작성하는 경우는, 다음과 같이 실시할 수 있습니다.

Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))

더 간단한 방법을 찾고 있어요아는 사람 있어요?

아래의 코드를 사용하였습니다.

string fileName = "C:\file.docx";
MessageBox.Show(Path.Combine(Path.GetDirectoryName(fileName),Path.GetFileNameWithoutExtension(fileName)));

출력은 다음과 같습니다.

C:\파일

UWP API를 요청하지 않을 수도 있습니다.하지만 UWP에서는file.DisplayName는 확장자가 없는 이름입니다.다른 사람들에게 유용한 희망.

String 연산을 사용하는 경우 lastIndexOf() 함수를 사용하면 문자 또는 하위 문자열의 마지막 항목을 검색할 수 있습니다.Java에는 수많은 문자열 함수가 있습니다.

오래된 질문인 건 알지만Path.GetFileNameWithoutExtension더 좋고 깔끔한 선택일 수도 있습니다.하지만 개인적으로 저는 이 두 가지 방법을 프로젝트에 추가했고 그것들을 공유하고 싶었습니다.범위와 인덱스를 사용하기 때문에 C# 8.0이 필요합니다.

public static string RemoveExtension(this string file) => ReplaceExtension(file, null);

public static string ReplaceExtension(this string file, string extension)
{
    var split = file.Split('.');

    if (string.IsNullOrEmpty(extension))
        return string.Join(".", split[..^1]);

    split[^1] = extension;

    return string.Join(".", split);
}
ReadOnlySpan<char> filename = "abc.def.ghi.txt";
var fileNameWithoutExtension = RemoveFileExtension(filename); //abc.def.ghi

string RemoveFileExtension(ReadOnlySpan<char> path)
{
    var lastPeriod = path.LastIndexOf('.');
    return (lastPeriod < 0 ? path : path[..lastPeriod]).ToString();
}
    /// <summary>
    /// Get the extension from the given filename
    /// </summary>
    /// <param name="fileName">the given filename ie:abc.123.txt</param>
    /// <returns>the extension ie:txt</returns>
    public static string GetFileExtension(this string fileName)
    {
        string ext = string.Empty;
        int fileExtPos = fileName.LastIndexOf(".", StringComparison.Ordinal);
        if (fileExtPos >= 0)
            ext = fileName.Substring(fileExtPos, fileName.Length - fileExtPos);

        return ext;
    }
        private void btnfilebrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            //dlg.ShowDialog();
            dlg.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string fileName;
                fileName = dlg.FileName;
                string filecopy;
                filecopy = dlg.FileName;
                filecopy = Path.GetFileName(filecopy);
                string strFilename;
                strFilename = filecopy;
                 strFilename = strFilename.Substring(0, strFilename.LastIndexOf('.'));
                //fileName = Path.GetFileName(fileName);             

                txtfilepath.Text = strFilename;

                string filedest = System.IO.Path.GetFullPath(".\\Excels_Read\\'"+txtfilepath.Text+"'.csv");
               // filedest = "C:\\Users\\adm\\Documents\\Visual Studio 2010\\Projects\\ConvertFile\\ConvertFile\\Excels_Read";
                FileInfo file = new FileInfo(fileName);
                file.CopyTo(filedest);
             // File.Copy(fileName, filedest,true);
                MessageBox.Show("Import Done!!!");
            }
        }

이 실장은 유효합니다.

string file = "abc.txt";
string fileNoExtension = file.Replace(".txt", "");

언급URL : https://stackoverflow.com/questions/7356205/remove-file-extension-from-a-file-name-string

반응형