Parser String C#功能

时间:2015-09-03 00:39:46

标签: c#

我需要将此函数转换为C#的替代方法,我试图找到一些类似的函数但没有成功。

Pascal / Delphi中的函数

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替代方案?

2 个答案:

答案 0 :(得分:2)

string.IndexOf => Pos

string.LastIndexOf => PosEx (I think)

string.Substring => Copy

现在尝试编写一些代码并再次询问是否卡住了

答案 1 :(得分: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;