我需要能够读取字符串的实际长度。
例子:
- "\t" 的长度为 4。 - "\t foobar" 的长度为 11。 -
如果我只需要处理制表符和空格,那么编写解码器就很容易了,但对于第三个例子,我不知道该如何处理。有没有办法在C#中强制让一个字符串自我解释?
谢谢。
例子:
- "\t" 的长度为 4。 - "\t foobar" 的长度为 11。 -
String.Format("\t {0, -15}", "Hello World")
的长度为 20。如果我只需要处理制表符和空格,那么编写解码器就很容易了,但对于第三个例子,我不知道该如何处理。有没有办法在C#中强制让一个字符串自我解释?
谢谢。
String.Format
,然后使用制表符测量字符串长度(如果您假设制表符为四个空格,则不要忘记"a \t"和"\t"都是四个字符)。当然,在那个分支中,您要寻找的制表符将是实际的制表符字符,而不是反斜杠后跟小写字母"t"。另一种选择是重新实现String.Format
,但这是疯狂的。"强制字符串自我解释"的方法是使用String.Format
。 - 15ee8f99-57ff-4f92-890c-b56153\t
的长度始终为1,但如果特定程序将其输出到显示器上,则会呈现不同的显式长度。例如,NotePad使用8个列宽来表示制表符;LINQPad 使用 3 个列宽;Visual Studio 使用 4 个列宽;而 Microsoft Word 使用 0.5 英寸的列宽。因此,问题是你正在针对哪种显示屏计算有效长度?如果你只关心制表符(并且它总是在开头,并假设为4个字符的制表符),那么简单的解决方案是"the string".Replace("\t", " ").Length
。 - mellamokb\t
表示它。但它在底层是字符#9(TAB字符),并且始终为一个字符。包含TAB字符的字符串长度为1个字符。在向终端显示字符串时,某些软件程序遇到字符#9时会仅仅发出四个空格,这纯粹是约定俗成的。 - mellamokb