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)