项目

C# 使用技巧

字符串拼接

string.Join(Environment.NewLine, ["字符串1", "字符串2", "字符串3"]);

C# 中,string.Join 方法用于将一个字符串数组中的元素连接成一个单独的字符串,并在每个元素之间插入指定的分隔符。Environment.NewLine 代表当前环境下的换行符,通常在 Windows 上是 "\r\n",在 Unix/Linux 上是 "\n"

所以,当你使用 string.Join(Environment.NewLine, ["字符串 1", "字符串 2", "字符串 3"]) 这段代码时,它的作用是将字符串数组 ["字符串 1", "字符串 2", "字符串 3"] 中的每个元素用当前环境的换行符连接起来,生成一个新的字符串,结果看起来如下:

字符串1
字符串2
字符串3

每个字符串都在新的一行上,符合多行文本的展示格式。

字符串分割

", 字符串1 , 字符串2 , 字符串3 , ,".Split(",", StringSplitOptions.RemoveEmptyEntries);

C# 中,string.Split 方法用于将字符串分割成子字符串数组,基于指定的分隔符。当你使用上述代码时,它执行的操作如下:

  1. 首先,它会使用逗号 , 作为分隔符来分割字符串 ", 字符串1 , 字符串2 , 字符串3 , ,"
  2. StringSplitOptions.RemoveEmptyEntries 参数告诉方法在返回的数组中不包含任何空字符串。这意味着如果分隔符相邻(例如 , ,)或者在字符串的开始或结束处有分隔符,这些情况导致的空串将被移除。

因此,这段代码的结果会是一个字符串数组,包含了去除前后空白并移除了任何空项后的子字符串:

["字符串1", "字符串2", "字符串3"]

每个元素都是原始字符串中用逗号分隔的部分,而且首尾的空白已经被去除了。

string.ReplaceLineEndings() 方法

"行1\r\n行2\n行3\r\n".ReplaceLineEndings();

此方法搜索字符串中的所有换行符序列,并规范这些序列以匹配当前环境的换行符序列。 例如,在 Windows 上运行时,所有出现的非 Windows 换行符序列都将替换为序列 CRLF。 在 Unix 上运行时,所有出现的非 Unix 换行符序列都将替换为单个 LF 字符。

以上代码段在 Windows 平台上运行结果:

"行1\r\n行2\r\n行3\r\n"

Unix 平台上运行结果:

"行1\n行2\n行3\n"

String.ToLowerInvariant 方法

C# 中的 ToLower()ToLowerInvariant() 方法都用于将字符串中的字符转换为小写,但它们之间存在一些关键的区别:

ToLower()

  • 文化敏感: ToLower() 方法会根据当前线程的文化设置(CultureInfo)来转换字符。这意味着它会考虑当前区域性的特定规则,比如土耳其语中"I"到"ı"的转换。这可能导致在不同地区文化的计算机上运行时,结果可能有所不同。
  • 用法示例: 当你需要根据用户界面的语言环境来转换字符串时,可以使用此方法。例如,在一个特定文化的上下文中格式化文本时。

ToLowerInvariant()

  • 文化不变性: ToLowerInvariant() 方法不依赖于当前的文化设置,而是使用固定的文化规则(通常是 InvariantCulture,也称为“非特定文化”或“中性文化”)来转换字符。这保证了无论在哪个文化环境中执行,转换的结果都是一致的。
  • 性能优势: 在某些情况下,因为它不需查询或使用当前文化信息,所以可能比 ToLower() 方法有轻微的性能优势。
  • 用法示例: 当你需要确保代码的行为在所有文化环境中保持一致时,应使用此方法。例如,在进行内部处理、比较字符串或生成不面向用户的输出时。
在本文档中