C#字符串拆分-无结束分隔符

C#字符串拆分-无结束分隔符,c#,regex,string,split,C#,Regex,String,Split,昨天回答了我最初的问题,关于如何从字符串中分割出特定字符,然后删除这两个字符之间的内容 我说过要从这样的字符串中删除 lg-109-1.ea-091-2.hd-180-1.hr-220-1 我没有意识到有时候我想把我的角色分开(在这个例子中,它是hd和.hr和 但是你可以看到人力资源部没有,所以它不会被删除 这是我正在使用的代码 public static string RemoveB(string s) { s = Regex.Replace(s, @"hr.*?\.", "");

昨天回答了我最初的问题,关于如何从字符串中分割出特定字符,然后删除这两个字符之间的内容

我说过要从这样的字符串中删除

lg-109-1.ea-091-2.hd-180-1.hr-220-1
我没有意识到有时候我想把我的角色分开(在这个例子中,它是hd和.hr和

但是你可以看到人力资源部没有
,所以它不会被删除

这是我正在使用的代码

public static string RemoveB(string s) {
    s = Regex.Replace(s, @"hr.*?\.", "");
    s = Regex.Replace(s, @"hd.*?\.", "");
    return s;
}
是否有人知道如何检查hr后是否有。如果没有,则将其删除?

尝试使用
(\.\124;$)
而不仅仅是
\.
来匹配
或行尾。或者,如果您知道hr始终是最后一个条目,您可以使用
$
而不是
\.
来始终匹配行尾。

您可以这样做

public static string RemoveB(string s) {
    s = s.Replace("hr.","$");
    s = s.Replace("hr","");
    s = s.Replace("$","hr.");
    return s;
}
Regex.Replace(s, @"(hr|hd).*?(\.|$)", "");

$
描述字符串的结尾

只需使用可选的量词
匹配0或1
:-
@“hr.*?\?”
我已经准备好你的问题3次了,但仍然不知道你想要什么。是否在
hr
之后立即执行。您必须更详细地说明=Regex.Replace(s,@“hr.*?[.|$]”,以及“);阿迪安,你写的怎么样。。?你能解释一下吗。。当我运行你的代码时,它会返回这个值。它返回
lg-109-1.ea-091-2.hd-180-1.-220-1
我建议你在调试器中运行代码,或者在发布一个显然不起作用的答案之前理解OP想要什么。这离工作还有很长的路要走,甚至还不近。查看您的第一次和最后一次更换。首先,你取代人力资源部。美元*。然后将*$替换回人力资源部。给你和你开始时完全一样的结果。所以这里唯一要做的就是用空字符串替换hr,而这根本不是op所要求的。因此:-3@Ardhian“koponk”Nugroho我没有投你反对票,但你的解决方案不起作用。op想替换
hr
hd
之间的所有内容。你的解决方案不能做到这一点。即使它是java。它也不起作用