這應該做你想要什麼:
Regex regex = new Regex(@"^\t+", RegexOptions.Multiline);
s = regex.Replace(s, m => new string(' ', 4 * m.Value.Length));
網上看到它:ideone
更新
下面是ASP.NET Web窗體版本,在視覺上運行Web Developer 2010 Express:
Default.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(object sender, EventArgs e)
{
****Response.Write("Hello World");
}
的星號在那裏只是爲了讓您輕鬆看標籤已被正確替換爲空格。將'*'
更改爲' '
以獲取空格而不是星號。
嘗試'\ n \ t'與'\更換ñ'或檢查您對多行模式在你的正則表達式 – 2012-07-29 21:46:11
應在代碼中的其他地方的標籤會發生什麼?保持不變? – 2012-07-29 21:46:40
該選項卡是否始終位於字符串的開頭? – Daniel 2012-07-29 21:47:04