我正在尝试将一段代码从java转换为c#,但我找不到如何正确地执行此操作。 我需要翻译的是: (getPattern返回Pattern,数据是具有模式变量和枚举(TokenType)的类型)
Match matcher = data.getPattern().matcher(str);//ThisLine
if (matcher.find())//ThisLine
{
String token = matcher.group().trim();//This Line
str = matcher.replaceFirst(""); //This Line
if (data.getType() == TokenType.String_Literal)
{
return (lastToken = new Token(token.Substring(1, token.Length - 1), TokenType.String_Literal));
}
else
{
return (lastToken = new Token(token, data.getType()));
}
}
我试图翻译它并得到了这个:
Match matcher = data.getRegex().Match(str);
if (matcher.Success)
{
String token = matcher.Value.Trim();
str = data.getRegex().Replace(token, "", 1);
if (data.getType() == TokenType.String_Literal)
{
return (lastToken = new Token(token.Substring(1, token.Length - 1), TokenType.String_Literal));
}
else
{
return (lastToken = new Token(token, data.getType()));
}
}
我不是100%理解代码,但部件似乎都是正确的替代品,他们似乎做同样的事情(当我读到它们时)。它们没有给出任何错误,但问题是c#代码的行为与java代码的行为不同。
编辑:我根本找不到这些代码行的c#等价物。
Matcher matcher = A_Pattern.matcher(A_String)
matcher = matcher.group().trim();
boolean A_bool = matcher.find
String Another_String = matcher.replaceFirst("");