1

当我尝试将模式与将成功返回为假的字符串匹配时,我的代码中出现了这个问题...我用来测试表达式的站点是http://regexhero.net/tester/

在我们进入代码之前有一点背景知识:我正在使它尽可能通用。有一些路径可能会在此过程中产生额外的 ',因此为了清除它,如果在清理它的路径中\有两个以上的 ',我首先使用正则表达式进行处理。\这样做的问题是,一些路径,因为它们来自服务器\,在路径名中有四个(只有两个\经常,但由于它的 C# 编译器希望它是四个\),因此第二步是在路径的开头添加额外的两个\来满足一切并使事情变得更好。

这是我将使用的路径示例,因此您有一个想法:

\\\\moon\Release_to_Eng\V11\Client

这是我的代码:

//pass over the value of what the user selected into the global variable 
GlobalVars.strPrevVersion = GlobalVars.strDstPath + "\\" + cboVerPath.Text;

//if there are more than two \'s in the path then replace them 
GlobalVars.strPrevVersion = Regex.Replace(GlobalVars.strPrevVersion, @"\\{2,}", "\\");

//check to see if there are two \'s at the begining of the path name 
Match match = Regex.Match(GlobalVars.strPrevVersion, @"^\\\\");

//if there are two \'s in the begining of the path name then add two more.
if (match.Success) << THIS is where it goes wrong the Success returns false even though it should match 
{
  GlobalVars.strPrevVersion = @"\\" + GlobalVars.strPrevVersion;
}            
4

2 回答 2

0

来自 OP,user2619395

万一有人对此有未来的问题,我想通了。发生的事情是它不匹配的原因是它正在查看文本格式的路径,而不是 C# 在调试器中看到的格式。因此路径只有一个 \ 同时它正在寻找两个所以它永远不会工作。如果这有任何意义。

(user2619395,请随意添加您自己的答案。完成后在此帖子上发表评论,我将删除此帖子。)

于 2013-08-13T16:53:04.073 回答
0

您可以使用 TrimStart 确保开头的反斜杠数量正确:

 String s = @"\\\\\\\\testestestest";
 s = @"\\" + s.TrimStart('\\');

将始终以 2 开头。如果我误解了你的目标,请告诉我。

于 2013-08-13T14:29:31.197 回答