简体   繁体   中英

How to remove a certain substring in C#

So I have a few file extensions in my C# projects and I need to remove them from the file name if they are there.

So far I know I can check if a Sub-string is in a File Name.

if (stringValue.Contains(anotherStringValue))
{  
    // Do Something // 
}

So if say stringValue is test.asm , and then it contains .asm , I want to somehow remove the .asm from stringValue .

How can I do this?

You can use Path.GetFileNameWithoutExtension(filepath) to do it.

if (Path.GetExtension(stringValue) == anotherStringValue)
{  
    stringValue = Path.GetFileNameWithoutExtension(stringValue);
}

if you want a "blacklist" approach coupled with the Path library:

// list of extensions you want removed
String[] badExtensions = new[]{ ".asm" };

// original filename
String filename = "test.asm";

// test if the filename has a bad extension
if (badExtensions.Contains(Path.GetExtension(filename).ToLower())){
    // it does, so remove it
    filename = Path.GetFileNameWithoutExtension(filename);
}

examples processed:

test.asm        = test
image.jpg       = image.jpg
foo.asm.cs      = foo.asm.cs    <-- Note: .Contains() & .Replace() would fail

No need for the if(), just use :

stringValue = stringValue.Replace(anotherStringValue,"");

if anotherStringValue is not found within stringValue , then no changes will occur.

One more one-liner approach to getting rid of only the ".asm" at the end and not any "asm" in the middle of the string:

stringValue = System.Text.RegularExpressions.Regex.Replace(stringValue,".asm$","");

The "$" matches the end of the string.

To match ".asm" or ".ASM" or any equivlanet, you can further specify Regex.Replace to ignore case:

using System.Text.RegularExpresions;
...
stringValue = Regex.Replace(stringValue,".asm$","",RegexOptions.IgnoreCase);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM