相关疑难解决方法(0)

我可以在逐字字符串文字中转义双引号吗?

在C#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此执行"获取双引号"不起作用.有没有办法在逐字字符串文字中获得双引号?

这可以理解为不起作用:

string foo = @"this \"word\" is escaped";
Run Code Online (Sandbox Code Playgroud)

c# string escaping literals verbatim-string

522
推荐指数
5
解决办法
39万
查看次数

检查Path是文件还是目录的更好方法是什么?

我正在处理一个TreeView目录和文件.用户可以选择文件或目录,然后使用它执行某些操作.这要求我有一个方法,根据用户的选择执行不同的操作.

目前我正在做这样的事情来确定路径是文件还是目录:

bool bIsFile = false;
bool bIsDirectory = false;

try
{
    string[] subfolders = Directory.GetDirectories(strFilePath);

    bIsDirectory = true;
    bIsFile = false;
}
catch(System.IO.IOException)
{
    bIsFolder = false;
    bIsFile = true;
}
Run Code Online (Sandbox Code Playgroud)

我不禁觉得有更好的方法来做到这一点!我希望找到一个标准的.NET方法来处理这个问题,但我无法做到这一点.是否存在这样的方法,如果不存在,确定路径是文件还是目录的最直接的方法是什么?

.net c# directory file path

359
推荐指数
7
解决办法
24万
查看次数

Javascript:负面的lookbehind相当于?

有没有办法在javascript正则表达式中实现相当于负面的lookbehind?我需要匹配一个不以特定字符集开头的字符串.

如果在字符串的开头找到匹配的部分,我似乎无法找到正确执行此操作的正则表达式.负面的看起来似乎是唯一的答案,但javascript没有.

编辑:这是我想要工作的正则表达式,但它没有:

(?<!([abcdefg]))m

所以它会匹配'jim'或'm'中的'm',但不会匹配'jam'

javascript regex negative-lookbehind

133
推荐指数
6
解决办法
7万
查看次数

用于解析目录和文件名的正则表达式

我正在尝试编写一个正则表达式,它将使用匹配组解析完全限定路径的目录和文件名.

所以...

/var/log/xyz/10032008.log
Run Code Online (Sandbox Code Playgroud)

将承认group 1 to be "/var/log/xyz"group 2 to be "10032008.log"

看似简单,但我不能让匹配的团队为我的生活工作.

注意:正如一些受访者所指出的,这可能不是正常表达的好用.通常我更喜欢使用我正在使用的语言的文件API.我实际上要做的事情比这复杂得多,但要解释起来要困难得多,所以我选择了一个每个人都熟悉的域名,以便最简洁地描述根本问题.

regex parsing

26
推荐指数
5
解决办法
12万
查看次数

拖放到Powershell脚本

我以为我对此有了答案,但是我玩的越多,我就越认为它是Powershell的设计缺陷.

我想拖放(或使用Send-To机制)将多个文件和/或文件夹作为数组传递给Powershell脚本.

测试脚本

#Test.ps1
param ( [string[]] $Paths, [string] $ExampleParameter )
"Paths"
$Paths
"args"
$args
Run Code Online (Sandbox Code Playgroud)

尝试#1

我使用以下命令行创建了一个快捷方式,并将一些文件拖到它上面.这些文件作为单独的参数出现,这些参数首先匹配脚本参数的位置,其余部分放在$ args数组中.

尝试#1的快捷方式

powershell.exe -noprofile -noexit -file c:\Test.ps1
Run Code Online (Sandbox Code Playgroud)

包装脚本

我发现我可以用包装脚本做到这一点......

#TestWrapper.ps1
& .\Test.ps1 -Paths $args
Run Code Online (Sandbox Code Playgroud)

包装脚本的快捷方式

powershell.exe -noprofile -noexit -file c:\TestWrapper.ps1
Run Code Online (Sandbox Code Playgroud)

批处理文件包装器脚本

它通过批处理文件包装脚本工作...

REM TestWrapper.bat
SET args='%1'
:More
SHIFT
IF '%1' == '' GOTO Done
SET args=%args%,'%1'
GOTO More
:Done
Powershell.exe -noprofile -noexit -command "& {c:\test.ps1 %args%}"
Run Code Online (Sandbox Code Playgroud)

尝试回答

Keith Hill提出了使用以下快捷命令行的优秀建议,但它没有正确传递参数.当到达Test.ps1脚本时,带有空格的路径被拆分.

powershell.exe -noprofile -noexit -command "& {c:\test1.ps1 $args}"
Run Code Online (Sandbox Code Playgroud)

有没有人找到一种方法来做到这一点没有额外的脚本?

powershell

15
推荐指数
3
解决办法
2万
查看次数

正则表达式以验证Windows UNC路径

我正在尝试使用正则表达式在c#中验证Windows路径。基于这个答案,https://stackoverflow.com/a/24703223/4264336我想出了一个正则表达式,它允许驱动器号和unc路径,但似乎阻塞了空格。

功能:

public bool ValidatePath(string path)
    {
        Regex regex = new Regex(@"^(([a-zA-Z]:\\)|\\\\)(((?![<>:""/\\|? *]).)+((?<![ .])\\)?)*$");
        return regex.IsMatch(path);
    }
Run Code Online (Sandbox Code Playgroud)

它适用于我所有的测试用例,但文件名中空格除外:

    [Test]
    [TestCase(@"c:\", true)]
    [TestCase(@"\\server\filename", true)]
    [TestCase(@"\\server\filename with space", true)] //fails
    [TestCase(@"\\server\filename\{token}\file", true)] 
    [TestCase(@"zzzzz", false)]
    public void BadPathTest(string path, bool expected) 
    {
        ValidatePath(path).Should().Be(expected);
    }
Run Code Online (Sandbox Code Playgroud)

如何获取文件名中的空格,我一生都看不到在哪里添加它?

c# regex

4
推荐指数
1
解决办法
756
查看次数