【转】C# 中@符号在字符串中的作用

2019-03-02 00:54|来源: 网路

@符号是特殊而又实用的C#符号。

比如它在string中的应用。

1

字符@表示,其后的字符串是个“逐字字符串”(verbatim string)。 // 这个说法来自C# Primer 中文版(Stanley B. Lippman, 侯捷/陈硕合译)

2

对于逐字字符串字面变量(verbatim string literal ),我们不再需要使用“转义序列”就可以指定反斜线之类的特殊字符。@的这个特点使得在表示文件路径时很方便。

如:

string str = @"C:\Test.txt";

3

另外一点,用@表示的字符串能够跨越数行。这数行之内的空白字符(White Space)都会保留在字符串里。

这样便能允许存储和生成带有格式的文本块。

如:

string strText = @"Line1

Line2

Line3";

有意思的是如果在VS.NET2003中当你输入完第一行(string strText = @"Line1)换行后,光标会自动到第二行最开头 ^_^。很智能化、人性化的判断。

4

不知道大家在最初看到@的功能时有没有想,如果“转义序列”(\)在字符串中“失效”,那么想包含一个双引号("),怎么办?我找到了答案。

方法很简单。在双引号之前再加一个双引号即可。

如:

string str = @"""Great!""Said Allen Lee";

转自yuantao(Try to make myself shape)的博客,原文地址:http://www.cnblogs.com/xuyuantao/articles/1018182.html

山东科技大学校友论坛 http://www.skdxy.com/
物流配货网 http://www.wlphw.com/
相爱(淘宝店) http://xiangai.taobao.com/
加微信号: WebsiteBuilder
微信二维码微信号: WebsiteBuilder


转自:http://www.cnblogs.com/suizhikuo/archive/2013/04/18/3029404

相关问答

更多
  • C#转换有如下方法: 1.int num = Convert.ToInt32(字符串); string str = Convert.ToString(数字); (没有必要,不要用这种方法) 2.int num = (int)字符串; string str = (string)数字; 3.就是你自己写的方法!
  • 首先你要确定LbCur.Text的值是一个数字, 如果是数字就好办了;可以这样实现你想要的结果; int a=int.Parse(lbCur.Text.Trem()); lbCur.Text=(a-1).Tostring(); 这样应该OK了!! 希望对你有帮助!!!
  • 尝试String.IndexOf和String.Substring 。 String s1 = "My name is testing."; String sub = "name is"; int index = s1.IndexOf(sub); String found = s2.Substring(index, sub.Length); Try String.IndexOf and String.Substring. String s1 = "My name is testing."; String ...
  • 这是一个非常简单的实现: void keepalnum(char *src) { unsigned char *dest = src; while ((*dest = *src++)) dest += isalnum(*dest) ? 1 : 0; } 我们的想法是在每次复制后推进源指针,但只有在看到字母数字字符时才移动目标指针。 以下是您使用它的方式: char str[] = "quick-brown fox jumps? over the.. lazy dog!"; ...
  • 您无法替换字符串中的字符。 你应该做的是使用std :: string作为std :: vector (因为它非常相似)。 您可以将字母分配给单词中的某个位置: 字[2] = yourLetter; 你甚至不需要知道之前在那个地方的东西,所以你不需要更换它 - 分配更容易。 You can't replace characters in string. What you should do is to use std::string as std::vector< char > (because ...
  • 这是您通过DUMP或BACKUP语句创建的备份排序的SQL转储吗? 如果是这样的话答案几乎没有。 它本质上是数据库物理结构的快照。 您需要先将转储/备份恢复/加载到可运行的数据库,然后才能对其执行任何操作。 Is this a SQL dump of the backup sort that you create via a DUMP or BACKUP statement? If so the answer is pretty much no. It's essentially a snapshot of ...
  • 看起来你想删除变音符号并留下基本字符。 我推荐Ben Lings的解决方案 : string input = "ŠĐĆŽ šđčćž"; string decomposed = input.Normalize(NormalizationForm.FormD); char[] filtered = decomposed .Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) .ToArray(); st ...
  • 只是使用ctype.h提供的函数的一个算法草图: #include void remove_punct_and_make_lower_case(char *p) { char *src = p, *dst = p; while (*src) { if (ispunct((unsigned char)*src)) { /* Skip this character */ src++; ...
  • 在Delphi方面,你这样写: function GetArrayData(arr: PInteger; len: Integer): LongBool; stdcall; var i: Integer; P: PInteger; begin P := arr; for i := 0 to len-1 do begin P^ := i; inc(P); end; Result := True; end; 这里我们收到一个指向第一个元素的指针,以及数组的长度。 在 ...
  • 您需要初始化char数组,否则您将从内存中获取随机数据。 您可以轻松使用memset()函数来填充具有相同字符的数组。 在这种情况下,我用空值填充它,以便printf只输出所需的文本,因为null是标准的终止字符。 void insert_sir(char *s , char inserted_s[20] , int pos ) { char result_s[30] ; memset(result_s,0,30); strncpy(result_s,s,pos - 1); ...