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

标签 .net string

我正在使用正则表达式构建文本解析器。我需要将字符串中的所有制表符转换为空格字符。我不能假设一个制表符应该包含多少个空格,否则我可以用 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 of choice允许我将制表符的宽度更改为适合我的值。

关于.net - 将制表符转换为 .NET 字符串中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508033/

相关文章:

.net - 将 native 方法标记为已弃用/过时?

.net - "Splicing"代码写入 Windows 可执行文件

.NET 程序集加载

ios - 从包含数字的字符串中删除最后一位数字

将十六进制数字转换为十进制以进行比较 (C)

c# - 不使用 Task.Run() 安排工作时如何处理并发?

c# - 上传到 AWS S3 时无法访问已关闭的流

c - 根据命令行参数将字符串合并在一起。

java - 是否有一种有效的实现来量化两个字符串之间的相似性?

c# - 子字符串格式化以获取第一个下划线之后但第二个下划线之前的所有字符?