2015-09-03 55 views
-4

我需要將此函數轉換爲C#的替代方式,我試着找到一些類似的函數但沒有成功。解析器字符串C#函數

功能帕斯卡爾/德爾福

function Parser(Buffer,Start,Finish:string):string; 
var 
    PosStart, PosFinish: Integer; 
begin 
    PosStart := Pos(Start, Buffer)+ Length(Start); 
    PosFinish := Posex(Finish, Buffer,PosStart); 
    Result := Copy(Buffer, PosStart, PosFinish - PosStart); 
end; 

例如使用:

kappa := 'test 0646944 but'; 
Parser(kappa,'test','but'); 

這個函數返回的是這兩個陣營

Result: 0646944 

ANY1替代此之間?

回答

1

這些方法的工作:

var buffer = "test 0646944 but"; 
var start = "test"; 
var finish = "but"; 

var parsed = 
    buffer 
     .Substring(
      buffer.IndexOf(start) + start.Length, 
      buffer.LastIndexOf(finish) - buffer.IndexOf(start) - start.Length); 

// OR 

var parsed = 
    Regex 
     .Match(buffer, Regex.Escape(start) + "(.*?)" + Regex.Escape(finish)) 
     .Groups[1] 
     .Value; 
2
string.IndexOf => Pos 

string.LastIndexOf => PosEx (I think) 

string.Substring => Copy 

現在嘗試寫一些代碼,如果你遇到問題再問

+0

甚至維基百科不包括PosEx - https://en.wikipedia.org/ wiki/Comparison_of_programming_languages_(string_functions) –

+0

我猜想什麼是做 - OP將解決 – pm100

+0

我寧願賭'PosEx'是'string.IndexOf(value,startIndex)' –