我正在使用正则表达式构建文本解析器.我需要将字符串中的所有制表符转换为空格字符.我不能假设标签应该包含多少空格,否则我可以用4个空格字符替换标签.对于这类问题有没有好的解决方案.我需要在代码中执行此操作,因此我无法使用外部工具.
不幸的是,这些答案都没有解决我遇到的问题.我从外部文本文件中提取文本,我无法假设它们是如何创建的,或者是用于创建它们的操作系统.我相信制表符的长度可能会有所不同,所以如果我在阅读文本文件时遇到标签,我想知道应该用多少空格字符替换它.
不幸的是,您需要假设选项卡代表多少空格.您应该将其设置为固定值(如上面提到的四个)或将其设置为用户选项.
最快的方法是.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允许我将制表符的宽度更改为适合我的值.
我不确定标签是如何从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();