1

我正在编写一个动态代码编写器,并且正在编写一个编写 XML 文档的函数。一切都很好,除了格式化文档的功能不受欢迎地添加到末尾,我还需要它打破标点符号。

当前格式化函数:

public static String FormatForXmlDocumentation(String xmlLine, Int32 spacing, 
  Int32 length = 120)
{
    if (!string.IsNullOrEmpty(xmlLine))
    {
        var regex = new Regex(@".{0," + length.ToString() + "}", RegexOptions.Multiline);
        return regex.Replace(xmlLine, "$0\r\n" + string.Empty.PadRight(spacing) + "/// ");
    }

    return null;
}

测试代码(“!”表示结束):

Console.WriteLine(RenderForCode.FormatForXmlDocumentation(
@"Data info: Type: <see cref=""System.Nullable`1[System.Double]""/>; Nullable: false; Default: 101.23d; Low: 100d; High: 200d", 4, 40
) + "!");

电流输出:

Data info: Type: <see cref="System.Nulla
    /// ble`1[System.Double]"/>; Nullable: false
    /// ; Default: 101.23d; Low: 100d; High: 200
    /// d
    /// 
    /// !

期望的输出:

Data info: Type: <see cref="System.
    /// Nullable`1[System.Double]"/>; Nullable: 
    /// false; Default: 101.23d; Low: 100d; 
    /// High: 200d!

请注意,调用函数将处理第一行的前缀。

4

1 回答 1

1

尝试使用正则表达式:

@"\b.{0," + length.ToString() + @"}(?:(?!:)\b|$)"

\b确保单词不会在中间分开并提供$最后一行。

于 2013-07-07T12:09:03.653 回答