1

コンソールに表示したい長い文字列があり、文字列をいくつかの行に分割して、単語の区切りに沿ってうまく折り返され、コンソールの幅に収まるようにします。

例:

  try
  {
      ...
  }
  catch (Exception e)
  {
      // I'd like the output to wrap at Console.BufferWidth
      Console.WriteLine(e.Message);
  }

これを達成するための最良の方法は何ですか?

4

2 に答える 2

4

Bryan Reynoldsは、ここに優れたヘルパーメソッドを投稿しました(WayBackMachine経由)。

使用するには:

  try
  {
      ...
  }
  catch (Exception e)
  {
      foreach(String s in StringExtension.Wrap(e.Message, Console.Out.BufferWidth))
      {
          Console.WriteLine(s);
      }
  }

新しいC#拡張メソッド構文を使用するための拡張機能:

ブライアンのコードを編集して、次の代わりに次のようにします。

public class StringExtension
{
    public static List<String> Wrap(string text, int maxLength)
    ...

それは読みます:

public static class StringExtension 
{
    public static List<String> Wrap(this string text, int maxLength)
    ...

次に、次のように使用します。

    foreach(String s in e.Message.Wrap(Console.Out.BufferWidth))
    {
        Console.WriteLine(s);
    }
于 2013-03-16T05:00:08.577 に答える
1

これを試して

 int columnWidth= 8;
    string sentence = "How can I format a C# string to wrap to fit a particular column width?";
    string[] words = sentence.Split(' ');

StringBuilder newSentence = new StringBuilder();


string line = "";
foreach (string word in words)
{
    if ((line + word).Length > columnWidth)
    {
        newSentence.AppendLine(line);
        line = "";
    }

    line += string.Format("{0} ", word);
}

if (line.Length > 0)
    newSentence.AppendLine(line);

Console.WriteLine(newSentence.ToString());
于 2013-03-16T04:55:56.700 に答える