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 , 字符串2 , 字符串3 , ,"
; 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()
方法有轻微的性能优势。 - 用法示例: 当你需要确保代码的行为在所有文化环境中保持一致时,应使用此方法。例如,在进行内部处理、比较字符串或生成不面向用户的输出时。