小编Rol*_*oly的帖子

CSS选择表的第一行的第一列(不包括嵌套表)

我对CSS选择器有困难,我希望有人可以帮助我.

我有一些看起来像这样的HTML:

<table class=myTable>
   <tr>
      <td>this is the td of interest</td>
   </tr>
   <tr>
      <td>
         <table>
            <tr><td>I don't want this td!</td></tr>
         </table>
      </td>
   </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我正在尝试将背景图像应用到FIRST tr的第一个td.所以我尝试了以下方法:

table.myTable tr:first-child td:first-child {
    background-image: url(someUrl.gif);
}
Run Code Online (Sandbox Code Playgroud)

但这也是找到嵌套表的第一个tr的第一个td.我尝试过使用>和+的不同组合,但没有运气.有人有主意吗?

注意:我的目标是提供与IE7 +兼容的解决方案.

css

27
推荐指数
2
解决办法
8万
查看次数

一个"功能查找表"代替开关

我最近遇到了一些代码,通过硬编码替换了交换机的使用

Dictionary<string (or whatever we would've been switching on), Func<...>> 
Run Code Online (Sandbox Code Playgroud)

而且无论转换到底在哪里,它都会改为dict ["value"].调用(...).代码在某种程度上感觉不对,但与此同时,这些方法确实看起来更清晰一些,特别是在有很多可能的情况下.我不能给出任何关于为什么这是好的或坏的设计的理由,所以我希望有人可以给出一些支持/谴责这种代码的理由.性能有提升吗?失去清晰度?

例:

public class A {
    ...
    public int SomeMethod(string arg){
        ...
        switch(arg) {
            case "a": do stuff; break;
            case "b": do other stuff; break;
            etc.
        }
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

public class A {

    Dictionary<string, Func<int>> funcs = new Dictionary<string, Func<int>> {
        { "a", () => 0; },
        { "b", () => DoOtherStuff(); }
        ... etc.
    };

    public int SomeMethod(string arg){
        ...
        funcs[arg].Invoke();
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

c# lambda switch-statement

7
推荐指数
2
解决办法
4435
查看次数

LINQ - 可以回溯吗?

我正在弄乱LINQ,我很想知道我能用它做些什么.我想知道是否有可能在结果集上施加条件的LINQ查询.例如,假设我有几个单词的列表,我希望找到形成链的单词集(即单词的最后一个字母=下一个单词的第一个字母,对链中的第一个或最后一个单词没有约束) .像"你好,老,乳制品,黄色,世界......"之类的东西.

从这些集合中,我想要采用形成最长链的集合.

LINQ可以这样做吗?

var chains = (from word in words
             select word
             where result.IsChain()).Max(x => x.Length);
Run Code Online (Sandbox Code Playgroud)

linq backtracking

5
推荐指数
1
解决办法
581
查看次数

可以在字符类中使用 .NET RegEx 反向引用来排除以前匹配的字符吗?

我试图完成的任务是给定一个输入模式,例如 1 2 3 3 2 4 2 1,通过字典查找符合给定模式的单词。在我的代码中,我尝试将给定的字符串转换为正则表达式,如下所示:

(?<1>.)(?<2>.)(?<3>.)(\k<3>)(\k<2>)(?<4>.)(\k<2>)( \k<1>)

(在任何人开始抨击这里使用点之前,因为我的输入是一个只有真实单词的字典文件,我留下了点以获得更清晰的表达,而不是指定字符范围。)

这个表达式设法正确地找到了这个词,但它有一个缺陷。使用 1 2 3 4 5 6 等模式时,问题变得非常明显。我的算法生成以下正则表达式:

(?<1>.)(?<2>.)(?<3>.)(?<4>.)(?<5>.)(?<6>.)

这是错误的,因为它将匹配任何 6 个字符的字符串,而没有考虑到每个组不应该匹配任何已被先前组匹配的字符。换句话说,它没有考虑到每个字母都是不同的;没有重复。

所以我尝试在互联网上寻找语法以排除字符类中的命名组,即

[^\1](无效)、[^(\k<1>)](无效)、[^${1}](无效)...等。

在 .NET 文档中,它表明 \p{name} 是字符类中的有效语法,但我尝试了 [^\p{1}] 并且也不起作用。

所以,问题仍然存在......是否可以从进一步匹配中排除命名组?或者,我还能如何解决这个问题?

更新

根据我在这里得到的回复发布我的最终解决方案。此方法采用一个字符串,指定一个人正在寻找的模式,并将其转换为一个正则表达式,然后我将其应用到字典中并找到符合该模式的所有单词。

    string pattern = "12332421";

    private void CreateRegEx()
    {
        string regex = "^";

        for( int i = 0; i < pattern.Length; i++ )
        {
            char c = pattern[i];
            if (char.IsDigit(c))
            {
                if (isUnique(c))
                {
                    regex += "(.)(?!.*\\" + c + ")(?<!\\" + c + ".+)"; …
Run Code Online (Sandbox Code Playgroud)

c# regex

2
推荐指数
1
解决办法
1258
查看次数

角括号语法在C#中的含义是什么

我正在读这本书,它每次运行应用程序时都会尝试使用初始化程序来创建数据库,所以代码片段是这样的:

protected void Application_Start() {
    Database.SetInitializer(new DropCreateDatabaseAlways<MusicStoreDB>());

    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Run Code Online (Sandbox Code Playgroud)

我无法理解这一部分:

 new DropCreateDatabaseAlways<MusicStoreDB>()
Run Code Online (Sandbox Code Playgroud)

这是什么语法?什么<MusicStoreDB>()意思?

我知道这不是一个奇特的问题,但我需要帮助.

谢谢.

c# asp.net-mvc

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

标签 统计

c# ×3

asp.net-mvc ×1

backtracking ×1

css ×1

lambda ×1

linq ×1

regex ×1

switch-statement ×1