大きな文字列を操作し、文字列と文字列ビルダーの両方を使用するより良い方法を見つけようとしています。 以下は、文字列を取り、その文字列を正規表現で検索してリンクを見つける関数です。有効なリンクテキストにそれらをラップしたいリンクの出現。私の問題は、私は交換する必要があり、私はメモリの問題を取得している101のリンク値を持つデータベースエントリ(文字列)があります。C#String/StringBuilder MemoryExceptionの大きなセットの置換
このソリューションの方が良い方法がありますか?私はstring.replaceとstringbuilder.replaceの両方にそれを含めていません。
var resultString = new StringBuilder(testb);
Regex regx = new Regex(@"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)", RegexOptions.IgnoreCase);
MatchCollection mactches = regx.Matches(txt);
foreach (Match match in mactches)
{
if(match.Value.StartsWith("http://") || match.Value.StartsWith("https://"))
fixedurl = match.Value;
else
fixedurl = "http://" + match.Value;
resultString.Replace(match.Value, "<a target='_blank' class='ts-link ui-state-default' href='" + fixedurl + "'>" + match.Value + "</a>");
//testb = testb.Replace(match.Value, "<a target='_blank' class='ts-link ui-state-default' href='" + fixedurl + "'>" + match.Value + "</a>");
}
私はどこの文字列ビルダーも見ていないし、HTMLパーサーを使用してHTMLを解析しないでも、おそらくこのようにしても全く問題はありません。 ** small ** htmlを投稿して、何をしたいのか説明したら、html agility packでそれを行う方法を教えてください。 – mybirthname
'Regex.Replace()'を単に使うことはできませんか? –
代わりに 'HtmlAgilityPack'を使用します。 –