将制表符转换为.NET字符串中的空格

Ars*_*med 11 .net string

我正在使用正则表达式构建文本解析器.我需要将字符串中的所有制表符转换为空格字符.我不能假设标签应该包含多少空格,否则我可以用4个空格字符替换标签.对于这类问题有没有好的解决方案.我需要在代码中执行此操作,因此我无法使用外部工具.


不幸的是,这些答案都没有解决我遇到的问题.我从外部文本文件中提取文本,我无法假设它们是如何创建的,或者是用于创建它们的操作系统.我相信制表符的长度可能会有所不同,所以如果我在阅读文本文件时遇到标签,我想知道应该用多少空格字符替换它.

Gat*_*ler 16

不幸的是,您需要假设选项卡代表多少空格.您应该将其设置为固定值(如上面提到的四个)或将其设置为用户选项.

最快的方法是.NET(我正在使用C#):

var NewString = "This is a string with a    Tab";
var TabLength = 4;
var TabSpace = new String(' ', TabLength);

NewString = NewString.Replace("\t", TabSpace);
Run Code Online (Sandbox Code Playgroud)

然后,您可以将TabLength变量更改为您想要的任何内容,通常如前所述,四个空格字符.

所有操作系统中的选项卡长度相同,一个选项卡!不同的是软件显示它们的方式,通常这是四个空格字符的等效宽度,这也假设显示器使用固定宽度字体,如Courier New.

例如,我选择的IDE允许我将制表符的宽度更改为适合我的值.

  • 标签占UP TO TabSpace字符,而不是那么多字符. (2认同)

cka*_*kal 6

我不确定标签是如何从Unix文本文件中读取的,或者您的各种格式是什么,但这适用于内联文本.也许它会有所帮助.

var textWithTabs = "some\tvalues\tseperated\twith\ttabs";
var textWithSpaces = string.Empty;

var textValues = textWithTabs.Split('\t');

foreach (var val in textValues)
{
    textWithSpaces += val + new string(' ', 8 - val.Length % 8);
}

Console.WriteLine(textWithTabs);
Console.WriteLine(textWithSpaces);
Console.Read();
Run Code Online (Sandbox Code Playgroud)


Miy*_*der -1

您可以使用替换功能:

char tabs = '\u0009';
String newLine = withTabs.Replace(tabs.ToString(), "    ");
Run Code Online (Sandbox Code Playgroud)