在C#中格式化大块文本

时间:2013-11-20 20:57:19

标签: c# visual-studio-2012 windows-8

我已为Description分配了一段文字。此“描述”是从文本文件中提取的,具体取决于项目的id

private string _description = string.Empty;

public string Description
{
    get { return this._description; }
    set { this.SetProperty(ref this._description, value); }

}

这样可以正常工作并返回描述。但它作为一个大块/文本墙返回。

我尝试了以下操作,但效果不佳,它只格式化已定义的文本而对我没有帮助,因为Description是动态的。

 String ITEM_CONTENT = String.Format(
     "Item Content: {0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}",
     "proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat.");

我将描述符合我的XAML页面上的TextBlock

<TextBlock x:Name="decription" Text="{Binding Description}" 
       FontSize="30" TextWrapping="Wrap" Width="Auto"  
       MaxWidth="1400" LineHeight="35" Padding="20"/>

如何格式化此Description以使其更整洁,每5个句子以一个句点结束后换行或换行?

编辑:

试过这个,但仍然无效

private string _description = string.Empty;

public string Description
{
    get { return this._description; }

    set
    {
        var description = string.Empty;
        var substrings = "".Split( '.' );
        for ( int i = 0; i < substrings.Length; i++ )
        {
            description += substrings[i];
            if ( i%5 == 0 )
            {
                description += Environment.NewLine;
            }
        }
        this.SetProperty(ref this._description, description);
    }
}

2 个答案:

答案 0 :(得分:1)

您可以解析文本,并在每5个句点后插入换行符,然后重建字符串。

  private string _description = string.Empty;
  public string Description
  {
     get
     {
        return _description;
     }
     set
     {
        var description = string.Empty;
        var substrings = value.Split( new[] { '.', '?', '!' }, StringSplitOptions.RemoveEmptyEntries );
        for ( var i = 0; i < substrings.Length; i++ )
        {
           description += substrings[i] + ".";
           if ( i % 5 == 0 && i != 0 )
           {
              description += Environment.NewLine + Environment.NewLine;
           }
        }
        _description = description;
     }
  }

答案 1 :(得分:0)

看看这个msdn page

它应该清理一下并给你一些额外的选择。

此外,根据您的输入,您应该"\r\n",或者更好:

String ITEM_CONTENT = String.Format("Item Content: {0}{1}{0}{1}{0}{1}{0}{1}",
                    "proin lobortis sollicitudin augue elit mus congue
                        fermentum parturient,fringilla euismod feugiat.",
                    Environment.NewLine);

修改
试试这个:

public string Description
{
    get { return _description; }

    set 
    {
        _description = string.Empty;

        var substrings = value.Split( '.' );
        for ( int i = 0; i < substrings.Length; i++ )
        {
            _description += substrings[i];
            if ( i%5 == 0 )
            {
                _description += Environment.NewLine;
            }
        }   
    }
}
private string _description = string.Empty;

不确定为什么要尝试设置参考并完成所有操作。只需编辑您的私有字符串(_description),就可以了。