繁体   English   中英

将整行字符串向右移动

[英]Moving a whole line string to the right

        const string Duom = "Text.txt";
        char[] seperators = { ' ', '.', ',', '!', '?', ':', ';', '(', ')', '\t' };
        string[] lines = File.ReadAllLines(Duom, Encoding.GetEncoding(1257));
        for (int i = 0; i < lines.Length; i++)
        {

            string GLine = " " + lines[i];
            GLine = Regex.Replace(GLine, @"\s+", " ");
            GLine = GLine.PadRight(5, ' ');
            Console.WriteLine(GLine);
        }

读取一个文本文件,为每行在开头添加一个空格,删除所有双精度和以上的空格,我想将该行向右移动,但是它什么也没做。

结果: 程序结果

预期结果: 在此处输入图片说明

PadLeftPadRight如果指定的长度已经达到了不字符添加到您的字符串的开始/结束。

String.PadRight文档 (重点是我的):

返回一个新字符串,该字符串通过在指定字符串的右侧填充指定的Unicode字符( 指定的总长度)使该字符串中的字符左对齐。

您的所有字符串都大于5 (指定的总长度) ,因此PadRight / PadLeft将不执行任何操作。

“填充”字符串将添加空格(或其他字符),以便新字符串至少与所需数字一样大。

相反,只需在字符串之前手动添加5个空格。

GLine = "     " + GLine;

或更编程地:

GLine = new string(' ', 5) + GLine;

您可以这样替换循环的主体:

string GLine = new string(' ', 1 + i * 5) + Regex.Replace(lines[i], @"\s+", " ");
Console.WriteLine(GLine);

这将为每行增加1个空格,然后再增加5个空格。

for (int i = 0; i < lines.Count(); i++)
        {
            string GLine = new string(' ',5*i) + lines[i];

            Console.WriteLine(GLine);
        }

这应该为您的每一行增加5个额外的空格,我相信,如果我理解正确的话,这就是您要完成的工作。

您需要根据您的文本行数左移一个制表符。 最好使用的增量是i变量。

string GLine = " " + lines[i];
更改为
string GLine = new String('\\t', i) + lines[i];

顺便说一句,PadLeft应该可以工作,但是请记住,您需要执行一次

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM