2016-02-16 2 views
0

Есть ли способ удалить символы в строке после последнего вхождения разделителя?Удалить символы после последнего появления разделителя в строке

Я изучил следующие вопросы.

Split string by last separator - В этом случае символы до последнего вхождения опущены. Но мне просто нужно обратное.

Remove last characters from a string in C#. An elegant way? - Здесь символы после первого вхождения разделителя удаляются.

См., Например, У меня есть строка

"D:\dir1\subdir1\subdir11\subdir111\file1.txt" 

В результате я ожидаю

"D:\dir1\subdir1\subdir11\subdir111" 

Примечание: Это всего лишь пример. Мне нужно решение для работы и в других случаях.

ответ

2

Вы можете использовать метод String.Remove().

string test = @"D:\dir1\subdir1\subdir11\subdir111\file1.txt"; 
string result = test.Remove (test.LastIndexOf ('\\')); 

Значение, сохраненное в result будет

"D:\dir1\subdir1\subdir11\subdir111" 
1

это должно быть самым безопасным способом

string Pathname = @"D:\dir1\subdir1\subdir11\subdir111\file1.txt"; 
string Result = Path.GetDirectoryName(Pathname); 
+1

, что просто пример (путь к файлу). Я хотел бы, чтобы решение работало для любой строки. i.e у меня может быть строка типа "edfe-fefe-geer-edew". результат должен быть «edfe-fefe-geer- – kakkarot

+0

@madmax В приведенном выше примере нет' '\ '' – CinCout

1

Вы можете легко достигнуть этого с помощью LastIndexOf

string str [email protected]"D:\dir1\subdir1\subdir11\subdir111\file1.txt" 
str= str.SubString(0,str.LastIndexOf("\\")); 

Если вы ищете что-то родового затем создать метод расширения

public static string GetStringBeforeLastIndex(this string str,string delimeter) 
{ 
    return str.SubString(0,str.LastIndexOf(delimeter)); 
} 

сейчас вам просто нужно вызвать метод

string str [email protected]"D:\dir1\subdir1\subdir11\subdir111\file1.txt" 
    str = str.GetStringBeforeLastIndex("\\"); you can pass any delimeter 

string str [email protected]"asdd-asdasd-sdfsdf-hfghfg" 
     str = str.GetStringBeforeLastIndex("-"); 
Смежные вопросы