Как удалить определенную подстроку в C#
поэтому у меня есть несколько расширений файлов в моих проектах c# и мне нужно, чтобы удалить их из файла, если они есть.
пока я знаю, что могу проверить, есть ли подстрока в имени файла.
if (stringValue.Contains(anotherStringValue))
{
// Do Something //
}
так что если сказать stringValue
is test.asm
, а затем он содержит .asm
, Я хочу как-то убрать .asm
С stringValue
.
как я могу это сделать?
4 ответов
Если вы хотите" черный список " подход в сочетании с 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
можно использовать путь.GetFileNameWithoutExtension (filepath) сделать это.
if (Path.GetExtension(stringValue) == anotherStringValue)
{
stringValue = Path.GetFileNameWithoutExtension(stringValue);
}
нет необходимости в if (), просто используйте :
stringValue = stringValue.Replace(anotherStringValue,"");
Если anotherStringValue
не найден в stringValue
, то ничего не изменится.
еще один однострочный подход к избавлению только от ".asm " в конце, а не какой-либо "asm" в середине строки:
stringValue = System.Text.RegularExpressions.Regex.Replace(stringValue,".asm$","");
" $ " соответствует концу строки.
матч ".АСМ" или ".ASM " или любой equivlanet, вы можете дополнительно указать Regex.Заменить, чтобы игнорировать случай:
using System.Text.RegularExpresions;
...
stringValue = Regex.Replace(stringValue,".asm$","",RegexOptions.IgnoreCase);