かなり長い紐を持っています。文字列をデータバインドする前に、さらにテキストを挿入して文字列を変更できるようにしたいと考えています。たとえば、/a の直前と /userimage の直前にhttp://m.mydom.com<a href="/a/info/a.html"><img src="/userimage/imgs.jpg"/></a>
を挿入する必要がある文字列があります。これは常に同じであるため、追加する文字列は一貫していると言っても過言ではありません。これをラムダまたはC#だけで行いたいと思います。助けてくれてありがとう。
質問する
337 次
3 に答える
8
ページ上のすべての相対パスに対してこれを行う必要がある場合、これを実現するためにC#を使用することは、実際にはこれに最適なツールではありません。
HTMLには、ドキュメントのベースURIを明示的に指定するために使用されるbase
(仕様情報を参照)という要素が付属しています。HTMLを次のようなものに変更した場合:
<head>
<base href="http://m.mydom.com">
</head>
<body>
<a href="/a/info/a.html"><img src="/userimage/imgs.jpg"/></a>
</body>
画像とアンカーの両方が正しいベースを指します。私を信じないの?の素晴らしさを示すこのjsFiddleをbase
チェックしてください。
于 2012-05-30T02:42:01.907 に答える
1
簡単な正規表現を使用できます。
var regex = new Regex("(?<=(src|href)=\")([^\"]*)");
var s = "<a href=\"/a/info/a.html\"><img src=\"/userimage/imgs.jpg\"/></a>";
Console.WriteLine(regex.Replace(s, "http://m.mydom.com$0"));
(?<=...)
後読みです。置換前のリンクのコンテンツで$0
あるキャプチャ グループのコンテンツです。0
于 2012-05-30T02:47:58.113 に答える
1
String.Replaceを使用することはできませんか?
var s = "<a href=\"/a/info/a.html\"><img src=\"/userimage/imgs.jpg\"/></a>";
s.Replace("\"/a","\"http://m.mydom.com/a").Replace("\"/userimage", "\"http://m.mydom.com/userimage");
最も良い方法ではありませんが、いつでも正規表現を使用できます。
于 2012-05-30T02:38:46.623 に答える