1

HTML での C# コードの書式設定に取り組んでいます。タブ/インデントを 4 つのスペースに置き換えようとしています。

これが例です。

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Hello World");
}

Response.Write の前のタブを 4 つのスペースに置き換える必要があります。

^\t のようなものをさまざまなバリエーションで試し、^\s\s\s\s を試しました。これは簡単だと思いましたが、私が試したものはどれもタブと一致しないようでした.

私は何を間違っていますか?

ありがとうございました!

編集

VS から TextBox1 に直接コピーします。

ここに画像の説明を入力

ご覧のとおり、TextBox 値に実際のタブ (\t)がありません。これが問題の原因です。私のコメントで述べたように、^ を含むスペースは機能しました (最初の行のみ)。

したがって、最終的な正規表現は次のようになります... "\s\s\s\s".

4

2 に答える 2

4

これはあなたが望むことをするはずです:

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");
}

アスタリスクは、タブがスペースに正しく置き換えられたことを簡単に確認できるようにするためだけにあります。を変更し'*'' '、アスタリスクの代わりにスペースを取得します。

于 2012-07-29T21:51:22.120 に答える
0
string text = "\tHello World";
string replacedTabWith4Spaces = text.Replace("\t", "    ");
于 2012-07-29T21:57:30.247 に答える