0

CsQuery を使用して、一連のアンカー要素を変更する必要があります。

'...

Dim cqContext = WebForms.CreateFromRender(Page, AddressOf MyBase.Render, writer)

Dim cq = cqContext.Dom

Dim foo = cq("a")

'...

たとえば、すべてのアンカー要素で、href の先頭にある「/MyFolderName/」を「../」に置き換える必要があります。

私は単にこれを行うことができます:

For Each i In cq("a")
    i.Attributes("href") = Regex.Replace(i.Attributes("href"), "^/MyFolderName/", "../", RegexOptions.IgnoreCase)
Next

eachそれとも効用法の方が効率的ですか?

セレクターも絞り込む必要がありcq("a[href^=""/MyFolderName/""]")ますか?

それとももっと良い方法がありますか?

編集:効率的とは、最も安価であるという意味ではなく、よりエレガントな、たとえばコードの削減/操作の削減方法も探しています。

具体的には:

  • eachユーティリティメソッドを使用する必要がありますか?
  • 上記のようにセレクターを絞り込む必要がありますか?
4

2 に答える 2

1

この質問をする際には、これらのソリューションの 1 つを実装し、インストルメンテーションを通じて、それが許容できない速度低下の原因であることがわかったという暗黙の前提があります。あなたがそれをしていないなら、Donald Knuth に委ねます:

時期尚早の最適化は諸悪の根源です。

于 2013-07-30T16:34:33.057 に答える