当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将制表符转换为.NET字符串中的空格》经验,为你挑选了2个好方法。

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


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



1> GateKiller..:

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

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

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

NewString = NewString.Replace("\t", TabSpace);

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

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

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


标签占UP TO TabSpace字符,而不是那么多字符.

2> ckal..:

我不确定标签是如何从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();

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有