如何删除C#中的某个子字符串

本文关键字:字符串 何删除 删除 | 更新日期: 2023-09-27 18:25:02

所以我的C#项目中有一些文件扩展名,如果它们存在,我需要将它们从文件名中删除。

到目前为止,我知道我可以检查文件名中是否有子字符串。

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

所以,如果说stringValuetest.asm,然后它包含.asm,我想以某种方式从stringValue中删除.asm

我该怎么做?

如何删除C#中的某个子字符串

如果您想要与Path库相结合的"黑名单"方法:

// 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);
}

处理的示例:

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

您可以使用Path.GetFileNameWithoutExtension(filepath)来执行此操作。

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

不需要if(),只需使用:

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

如果在stringValue中未找到anotherStringValue,则不会发生任何更改。

只去掉字符串结尾的".asm"而不去掉字符串中间的任何"asm"的一种单一方法:

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

"$"与字符串的末尾匹配。

要匹配".asm"或".asm"或任何等效行星,您可以进一步指定Regex.Replace以忽略大小写:

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