2013-04-22 105 views
0

如何刪除字符串中的所有字符,直到匹配某個名稱?例如,我有以下字符串:刪除名稱前的字符串中的所有字符

"C:\\Installer\\Installer\\bin\\Debug\\App_Data\\Mono\\etc\\mono\\2.0\\machine.config" 

如何字符串「App_Data」之前刪除所有字符?

回答

6
var str = @"C:\Installer\Installer\bin\Debug\App_Data\Mono\etc\mono\2.0\machine.config"; 

var result = str.Substring(str.IndexOf("App_Data")); 

Console.WriteLine(result); 

打印:

App_Data\Mono\etc\mono\2.0\machine.config 

好了,這樣做的那種花哨的方式是嘗試使用獨立於平臺的類Path,其目的是處理文件和目錄路徑的操作。在您簡單的例子第一個解決方案是在多種因素的更好,並考慮下一個僅作爲一個例子:

var result = str.Split(Path.DirectorySeparatorChar) 
       .SkipWhile(directory => directory != "App_Data") 
       .Aggregate((path, directory) => Path.Combine(path, directory)); 

Console.WriteLine(result); // will print the same 
0

或者作爲擴展方法來實現:

public static class Extension 
{ 
    public static string TrimBefore(this string me, string expression) 
    { 
     int index = me.IndexOf(expression); 
     if (index < 0) 
      return null; 
     else 
      return me.Substring(index); 
    } 
} 

,並使用它像:

string trimmed = "i want to talk about programming".TrimBefore("talk"); 
相關問題