2014-01-30 41 views
0

之間我想從一個URI獲取頁面的名稱,例如,如果我有獲取頁面名稱,子兩個字符

"/Pages/Alarm/AlarmClockPage.xaml" 

我想AlarmClockPage

我試圖

//usage GetSubstring("/", ".", "/Pages/Alarm/AlarmClockPage.xaml") 
public static string GetSubstring(string a, string b, string c) 
{ 
    string str = c.Substring((c.IndexOf(a) + a.Length), 
      (c.IndexOf(b) - c.IndexOf(a) - a.Length)); 

    return str; 
} 

但是因爲被搜索的字符串可能包含一個或多個正斜槓,我不認爲這種方法在這種情況下工作。

那麼,我該如何考慮可能存在的多個正斜槓?

回答

2

爲什麼不使用已經在框架中的方法?

System.IO.Path.GetFileNameWithoutExtension(@"/Pages/Alarm/AlarmClockPage.xaml"); 
+0

謝謝。我必須在路徑參數中包含「@」嗎? – PutraKg

+2

@PutraKg - 只有在字符串中有字符才能逃脫。在提供的例子中沒有必要。 – WiredPrairie

0

如果你只想使用字符串函數,您可以嘗試:

var startIdx = pathString.LastIndexOf(@"/"); 
var endIdx = pathString.LastIndexOf("."); 
if(endIdx!=-1) 
{ 
    fileName = pathString.Substring(startIdx,endIdx); 
} 
else 
{ 
    fileName = pathString.Substring(startIdx); 
} 
+0

你爲什麼不使用內置函數?它處理正向或反向斜線。 – WiredPrairie

+0

當然我會使用它們,我只是建議這樣做,因爲它正在嘗試以這種方式執行此操作@WiredPrairie – deeiip

+0

我的觀點是 - 您的實現不完整。 – WiredPrairie

0

它使文件名從給定的文件路徑。試試這個

string pageName = System.IO.Path.GetFileName(@"/Pages/Alarm/AlarmClockPage.xaml");