【问题标题】:line break in string in c#c#中字符串中的换行符
【发布时间】:2012-10-30 20:35:13
【问题描述】:

我正在从资源加载器加载一个文本,其中包含 '\n' 以指示一个新行。文本块获取并显示此文本,但我看不到换行符?我也试图用 Environment.NewLine 替换每个 '\n',但没有任何反应。我能做什么?

这里有一点代码:

        TextBlock text = new TextBlock();
        text.FontSize = 18;

        var str = loader.GetString("AboutText");
        //str.Replace("\n", Environment.NewLine);

        text.Text = str;
        text.TextAlignment = TextAlignment.Justify;
        text.TextWrapping = TextWrapping.Wrap;
        text.Margin = new Thickness(10, 10, 10, 10);

【问题讨论】:

  • 它有“\r\n”还是只有“\n”?
  • 看看这个[问题][1]。我想这就是答案。 [1]:stackoverflow.com/questions/837367/…
  • 尝试\r\n,但没有任何反应。
  • 在问题中添加一些代码。
  • 为什么不能使用 Mode = "Muliline" 的 TextBox 而不是 TextBlock?

标签: c#-4.0 windows-8 windows-runtime winrt-xaml


【解决方案1】:

看起来Resource文件正在将\n转义为\\n,这意味着基本上有2个解决方案可以解决这个问题。

你可以

var str = Regex.Unescape(loader.GetString("AboutText")); 

或者在您的 resx 文件中,您可以通过按 Shift Enter 将 \n 替换为正常的换行符。

【讨论】:

  • 是的!它与 Regex.Unescape() 一起使用。非常感谢!
  • 很好的发现。这是一个容易忽视的细节。 +1
【解决方案2】:

试试“\r\n”。它对我有用。

    TextBlock text = new TextBlock();
    text.FontSize = 18;

    var str = "Hello\r\nWorld";

    text.Text = str;
    text.TextAlignment = TextAlignment.Justify;
    text.TextWrapping = TextWrapping.Wrap;
    text.Margin = new Thickness(10, 10, 10, 10);
    layoutRoot.Children.Add(text);

【讨论】:

  • 是的,使用硬编码字符串 \n 可以正常工作,但如果您使用资源加载器,它就无法工作...
猜你喜欢
  • 2012-12-22
  • 1970-01-01
  • 2020-02-14
  • 2011-10-20
  • 2019-05-09
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多