我不知道正则表达式,只是一个小任务,我不想坐下来学习它们 - 更不用说它们看起来很复杂。我想要做的是将一个段落传递给一个方法并删除一个以参数“begin”开头并以参数“end”结尾的文本。
public static string RemoveBetween(string wholeText, string begin, string end)
{
}
例如:
string myString = "one two three four five";
myString = RemoveBetween(myString, "two", "four");
最后一个字符串是“一五”
答案 0 :(得分:6)
public static string RemoveBetween(string wholeText, string begin, string end)
{
Regex.Replace(wholeText, String.Format("{0}.*?{1}", Regex.Escape(begin), Regex.Escape(end)), String.Empty);
}
易。说真的,学习正则表达式;他们需要进行大量的解析并将其缩减为一行代码。
作为比较,这里有一些近似于没有正则表达式时你必须做的事情:
public static string RemoveBetween(string wholeText, string begin, string end)
{
var result = wholeString;
var startIndex = result.IndexOf(begin);
while(startIndex >=0)
{
var endIndex = result.IndexOf(end) + end.Length;
//TODO: Define behavior for when the end string doesn't appear or is before the begin string
result = result.Substring(0,startIndex) + result.Substring(endIndex+1, result.Length - endIndex);
startIndex = result.IndexOf(begin);
}
return result;
}
答案 1 :(得分:0)
这是另一个例子,分步完成,以便更容易理解发生的事情,
public static string RemoveBetween(string wholeText, string begin, string end)
{
int indexOfBegin = wholeText.IndexOf(begin);
int IndexOfEnd = wholeText.IndexOf(end);
int lenght = IndexOfEnd + end.Length - indexOfBegin;
string removedString = wholeText.Substring(indexOfBegin, lenght);
return wholeText.Replace(removedString, "");
}
答案 2 :(得分:0)
你当然不需要正则表达式,如果你不使用它们,你会更容易检查输入。
public static string RemoveBetween( string wholeText, string begin, string end ) {
var beginIndex = wholeText.IndexOf( begin );
var endIndex = wholeText.IndexOf( end );
if( beginIndex < 0 || endIndex < 0 || beginIndex >= endIndex ) {
return wholeText;
}
return wholeText.Remove( beginIndex, endIndex - beginIndex + end.Length );
}
答案 3 :(得分:-2)
也许是这样。
string myString = "one two three four five";
myString = myString.Substring(0, myString.IndexOf("two")) + myString.Substring(myString.IndexOf("four") + "four".Length);