C# 是否可以防止Trim()删除空间?
这似乎是一个奇怪的问题,但有没有办法在字符串中放入空格,使C# 是否可以防止Trim()删除空间?,c#,string,trim,C#,String,Trim,这似乎是一个奇怪的问题,但有没有办法在字符串中放入空格,使Trim()不会删除它 e、 g.我希望输出是,例如,“Hello,World”(这就是我希望它显示的方式) 显而易见的答案是,不要调用Trim(),不幸的是,在本例中,我将字符串传递到一个库中(我没有源代码),而该库正在进行修剪 也许有一个角色看起来像一个空格,但实际上不是,所以不会被修剪?或者在字符串末尾放一些不可见的字符?使用不同的写入空间,它可能对您有用,也可能不适用 var str = "test "; var str2
Trim()
不会删除它
e、 g.我希望输出是,例如,“Hello,World”
(这就是我希望它显示的方式)
显而易见的答案是,不要调用Trim()
,不幸的是,在本例中,我将字符串传递到一个库中(我没有源代码),而该库正在进行修剪
也许有一个角色看起来像一个空格,但实际上不是,所以不会被修剪?或者在字符串末尾放一些不可见的字符?使用不同的写入空间,它可能对您有用,也可能不适用
var str = "test ";
var str2 = str.Replace(" ", "\u00A0");
真的吗
U+00A0 NO-BREAK SPACE
U+1680 OGHAM SPACE MARK
U+180E MONGOLIAN VOWEL SEPARATOR
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN SPACE (nut)
U+2003 EM SPACE (mutton)
U+2004 THREE-PER-EM SPACE (thick space)
U+2005 FOUR-PER-EM SPACE (mid space)
U+2006 SIX-PER-EM SPACE
U+2007 FIGURE SPACE
U+2008 PUNCTUATION SPACE
U+2009 THIN SPACE
U+200A HAIR SPACE
U+200B ZERO WIDTH SPACE
U+202F NARROW NO-BREAK SPACE
U+205F MEDIUM MATHEMATICAL SPACE
U+3000 IDEOGRAPHIC SPACE
U+FEFF ZERO WIDTH NO-BREAK SPACE
Trim(params char[]trimChars)
你可以传递trimChars
你想要被修剪的字符,因为你在lib上没有手。下面是我的破解方案:您可以用另一个特殊字符(如|)替换空格,在调用lib时它不会被修剪。然后重新将您的字符替换为空格…我的想法与@WilliamW相同。您可以将原始字符串中的空格替换为您的字符,当您从库中收到该字符串时,将该字符替换为空格。您是否仍需要魔法字符作为该库中的空格?或者那个图书馆仅仅是一个网关,你要么控制它的两边,要么一个魔法角色就可以了?我的意思是,库是否围绕一个api形成了一个网关,例如,它不会接受这种魔法字符?@MichaelRandall猜测它是否有效(正如OP断言的那样),这是因为库实际上没有使用Trim()
来修剪空白,而是使用了一个重载来指定要删除的字符(或完全不同的方法)。据我理解, Times()/Code >将视为在Unicode规范中定义为空白的空白空间。
删除\u00A0以及常规空间。@Dennis The OP已经确认了这一点。这一定是因为他们提到的库没有调用Trim()
,而是使用了其他方法(例如Trim(char[])
)。接受这一点是因为它不仅与我的库一起工作,而且我还调用了实际使用Trim()我自己(在库外)在同一个字符串上,它没有删除末尾的空格!使用的字符是零宽度无中断空格(U+FEFF)