我有一个基类"父"这样:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Parent
{
private int parentVirtualInt = -1;
public virtual int VirtualProperty
{
get
{
return parentVirtualInt;
}
set
{
if(parentVirtualInt != value)
{
parentVirtualInt = value;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
和这样的子类:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Child : Parent
{
public override int VirtualProperty
{
get
{
if(base.VirtualProperty > 0)
{
throw new ApplicationException("Dummy Ex");
}
return base.VirtualProperty;
}
set
{
if(base.VirtualProperty != …Run Code Online (Sandbox Code Playgroud) 在源代码中,我必须阅读(不是来自我)我发现了一个正常工作的正则表达式(或至少与代码没有做它应该做的那样).
正则表达式的想法是确保它处理的字符串在之后的结尾只有一个斜杠.
所以我们走了:
$string =~ s/\/*$/\//g; # Add a trailing slash
Run Code Online (Sandbox Code Playgroud)
我把它读作"在字符串的末尾找到任意数量的斜杠(包括0)并用一个斜杠替换它们".但这不是发生的事情.
正则表达式将一个/多个现有的尾部斜杠加倍.所以如果已经存在一个或多个,我最终会得到两个斜杠.如果没有,我得到一个(因为这是想法).
我可以用Regex测试仪重现它.只需在顶部框中输入http://example.com/foo/(并在结尾处使用不同的斜杠计数进行更改),在第二个中输入正则表达式,将"/"作为替换模式,然后点击"发送".
它似乎围绕正则表达式也用斜杠替换"没有"(或行结束?)(因此它用一个斜杠替换"没有"和现有的斜杠用一个斜杠代替我看到的两个斜杠. ).
我用了
$string =~ s/\/{1,0}$/\//g; # Add a trailing slash
Run Code Online (Sandbox Code Playgroud)
但是这只有在从头开始至少有一个斜杠时才有效.
编辑
万一有人想知道:
$string =~ s/\/*\z/\//g; # Add a trailing slash
Run Code Online (Sandbox Code Playgroud)
产生同样的事情.