2011-06-03 41 views
-4

鑑於字符串的字符串:/Projects/Multiply_Amada/MultiplyWeb/Shared/Home.aspx如何截斷在.NET

我想要的第三/後刪除所有尾隨字符,這樣的結果是:​​

我想這樣做沒有使用斯普利特或Charindex。

+4

你是不是在用'(Split/Charindex)'是什麼意思?在不知道索引從哪裏開始的情況下如何去除子串? – 2011-06-03 13:27:45

+0

同意......我認爲這是一個很奇怪的要求。 – Jemes 2011-06-03 13:33:27

+0

小心給出你的要求的理由?否則它應該被張貼在http://codegolf.stackexchange.com/ – DarthJDG 2011-06-03 16:15:20

回答

1
string str = "/Projects/Multiply_Amada/MultiplyWeb/Shared/Home.aspx"; 

string newStr = str.SubString(0,24); 

我想這會回答你的問題!

+0

沒有不能使用子字符串它會影響服務器鏈接..所以請給出另一種解決方案 – Anto 2011-06-03 13:52:32

2

好的,你的要求有點難。所以,這個是什麼:

string RemoveAfterThirdSlash(string str) 
{ 
    return str.Aggregate(
      new { 
       sb = new StringBuilder(), 
       slashes = 0 
      }, (state, c) => new { 
       sb = state.slashes >= 3 ? state.sb : state.sb.Append(c), 
       slashes = state.slashes + (c == '/' ? 1 : 0) 
      }, state => state.sb.ToString() 
     ); 
} 

Console.WriteLine(RemoveAfterThirdSlash("/Projects/Multiply_Amada/MultiplyWeb/Shared/Home.aspx")); 
+0

如何使用聚合函數的字符串..它會顯示錯誤('字符串「不包含'Aggregate'的定義,並且沒有可以找到接受'string'類型的第一個參數的擴展方法'Aggregate'(你缺少using指令還是程序集引用?)string RemoveAfterThirdSlash(string str) 第65行:第66行:返回str.Aggregate( 第67行:新 第68行:{ – Anto 2011-06-03 14:02:58

+0

添加System.Linq命名空間 – markpsmith 2011-06-03 14:23:51

0

此代碼acheives你需要什麼,但我寧願使用現有的.NET方法

string str = "/Projects/Multiply_Amada/MultiplyWeb/Shared/Home.aspx"; 

int index = 0; 
int slashCount = 0; 

for (int i = 0; i < str.Length; i++) 
{ 
    if (str[i] == '/' && slashCount < 3) 
    { 
     index = i; 
     slashCount++; 
    } 
} 

string newString = str.Substring(index + 1); 
+0

好的,謝謝工作 – Anto 2011-06-03 14:34:42

0

因爲你與路徑工作做在1號線,你可以這樣做:

Public Function GetPartialPath(ByVal input As String, ByVal depth As Integer) As String 

     Dim partialPath As String = input 
     Dim directories As New Generic.List(Of String) 

     Do Until String.IsNullOrEmpty(partialPath) 
      partialPath = IO.Path.GetDirectoryName(partialPath) 
      directories.Add(partialPath) 
     Loop 

     If depth > directories.Count Then depth = directories.Count 

     Return directories.ElementAt(directories.Count - depth) 

    End Function 

未測試。