首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩进多行文本

缩进多行文本
EN

Stack Overflow用户
提问于 2014-04-05 01:14:48
回答 4查看 10.7K关注 0票数 15

我需要缩进多行文本(与this question for a single line of text相反)。

假设这是我的输入文本:

代码语言:javascript
复制
First line
  Second line
Last line

我需要的是这个结果:

代码语言:javascript
复制
    First line
      Second line
    Last line

注意每一行的缩进。

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
var textToIndent = @"First line
  Second line
Last line.";
var splittedText = textToIndent.Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
var indentAmount = 4;
var indent = new string(' ', indentAmount);
var sb = new StringBuilder();
foreach (var line in splittedText) {
    sb.Append(indent);
    sb.AppendLine(line);
}
var result = sb.ToString();

有没有更安全/更简单的方法来做这件事?

我关注的是拆分方法,如果从Linux、Mac或Windows传输文本,而新行可能在目标机器中被正确分割,那么这种方法可能会很棘手。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-05 01:35:42

既然您正在缩进所有的行,那么执行这样的操作如何:

代码语言:javascript
复制
var result = indent + textToIndent.Replace("\n", "\n" + indent);

它应该同时覆盖Windows \r\n和Unix \n行尾。

票数 29
EN

Stack Overflow用户

发布于 2014-04-05 01:47:09

只需用换行符+缩进替换换行符:

代码语言:javascript
复制
var indentAmount = 4;
var indent = new string(' ', indentAmount);
textToIndent = indent + textToIndent.Replace(Environment.NewLine, Environment.NewLine + indent);
票数 4
EN

Stack Overflow用户

发布于 2019-02-23 08:02:04

与这里发布的其他解决方案相比,下面的解决方案可能显得冗长乏味;但它有一些明显的优点:

  • 它将保留行分隔符/终止符与它们在输入字符串中的完全相同。
  • 它不会在字符串末尾附加多余的缩进字符。
  • 它可能运行得更快,因为它只使用非常原始的操作(字符比较和复制;没有子字符串搜索,也没有正则表达式)。(但这只是我的期望,我还没有实际测量。)

代码语言:javascript
复制
static string Indent(this string str, int count = 1, char indentChar = ' ')
{
    var indented = new StringBuilder();
    var i = 0;
    while (i < str.Length)
    {
        indented.Append(indentChar, count);
        var j = str.IndexOf('\n', i + 1);
        if (j > i)
        {
            indented.Append(str, i, j - i + 1);
            i = j + 1;
        }
        else
        {
            break;
        }
    }
    indented.Append(str, i, str.Length - i);
    return indented.ToString();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22875444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档