これはあなたが望むことをするはずです:
Regex regex = new Regex(@"^\t+", RegexOptions.Multiline);
s = regex.Replace(s, m => new string(' ', 4 * m.Value.Length));
オンラインで見る: ideone
アップデート
Visual Web Developer 2010 Express で実行される ASP.NET Web フォームのバージョンを次に示します。
デフォルト.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"></asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<asp:TextBox ID="TextBox1" runat="server" Height="99px" Width="500px" TextMode="MultiLine"></asp:TextBox>
</asp:Content>
Default.aspx.cs
using System;
using System.Text.RegularExpressions;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
string code = "protected void Page_Load(object sender, EventArgs e)\n{\n\tResponse.Write(\"Hello World\");\n}";
Regex regex = new Regex(@"^\t+", RegexOptions.Multiline);
TextBox1.Text = regex.Replace(code, m => new string('*', 4 * m.Value.Length));
}
}
}
ボタンをクリックした後の結果:
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
****Response.Write("Hello World");
}
アスタリスクは、タブがスペースに正しく置き換えられたことを簡単に確認できるようにするためだけにあります。を変更し'*'
て' '
、アスタリスクの代わりにスペースを取得します。