C# String

C# String

C#中,String 类型是一个非常常用的数据类型,用于表示文本数据。它是 System.String 类的一个实例,位于 System 命名空间中。以下是一些关于C#String 类型的基本操作和特性:

String

字符串字面量

字符串可以通过双引号 " 来定义:

string greeting = "Hello, World!";

字符串连接

可以使用 + 运算符来连接字符串:

string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName; // "John Doe"

或者使用 String.Concat 方法:

string fullName = String.Concat(firstName, " ", lastName);

字符串是不可变的

C#中的字符串是不可变的,这意味着一旦一个字符串被创建,它的内容就不能被改变。任何修改字符串的操作都会创建一个新的字符串实例。

string original = "Hello";
string modified = original.Substring(0, 5); // "Hello"
original = modified.ToUpper(); // "HELLO"
// original 被修改了,但 modified 保持不变

字符串比较

区分大小写:默认的字符串比较是区分大小写的。可以使用 ==!= 运算符来比较两个字符串的值是否相等。
不区分大小写:使用 String.CompareString.Equals 方法,并指定StringComparison.OrdinalIgnoreCase

string a = "hello";
string b = "Hello";
bool areEqual = a == b; // false

bool areEqualIgnoreCase = 
	String.Equals(a, b, StringComparison.OrdinalIgnoreCase); // true

字符串方法

String 类提供了许多有用的方法来操作字符串,例如:

  • LengthLength 属性来获取字符串的长度。
  • Substring 来获取字符串的一部分。
  • IndexOf 来查找子字符串的位置。
  • Replace 来替换字符串中的字符或子字符串。
  • ToLowerToUpper 来转换字符串的大小写。
  • Trim 来去除字符串两端的空白字符。

字符串插值

C# 6.0 引入了字符串插值功能,它允许你在字符串中直接插入变量:

string name = "Alice";
string message = $"Hello, {name}!";

注意

  • 20250324

C#中,$@可以同时使用,用于创建插值逐字字符串。

  • $用于字符串插值,允许在字符串中嵌入表达式和变量。
  • @用于创建逐字字符串,将字符串按原样处理,忽略转义字符的特殊含义。

当两者结合使用时,可以在字符串中享受插值的便利,同时保留字符串的原始格式

string name = "John";
string message = $@"Hello, {name}!
Welcome to C#.";
Console.WriteLine(message);
// 输出:
// Hello, John!
// Welcome to C#.

字符串和字符数组

字符串可以转换为字符数组,反之亦然:

string text = "Sample";
char[] charArray = text.ToCharArray();

string fromCharArray = new String(charArray);

字符串格式化

  • 字符串插值:使用 ${}String.Format
  • 复合格式:使用 String.Format 来格式化数字和其他类型。
string formatted = String.Format("The value is {0}.", 42);
// 或者使用字符串插值
string formatted = $"The value is {42}.";

空字符串和 null

空字符串("")与 null 字符串是不同的。空字符串是一个长度为0的字符串,而 null 表示没有引用任何对象。

字符串的安全性

  • 避免注入:在处理用户输入时,确保进行适当的清理和验证。
  • 编码和解码:使用 System.Text.Encoding 类来处理字符串的编码和解码。

正则表达式

使用 System.Text.RegularExpressions.Regex 类:进行复杂的字符串匹配和替换。


注意

  • 避免不必要的字符串连接:因为字符串是不可变的,频繁的连接操作会创建多个临时字符串对象。
  • 使用 StringBuilder:对于大量字符串操作,使用 StringBuilder 来提高性能。StringBuilderString使用相同。
    使用 StringBuilder 比使用 + 运算符连接字符串要高效得多,因为它避免了在每次迭代中创建新的字符串对象。
  • StringBuilder 是线程安全的,但是 Append 方法不是线程安全的。如果你在多线程环境中使用 StringBuilder,需要自己管理线程同步。
    StringBuilderCapacity 属性可以设置其最大容量,但通常不需要手动设置,因为 StringBuilder 会自动调整容量。

String.Format

String.FormatC# 中的一个非常有用的字符串方法,它允许你创建一个格式化的字符串,其中包含零个或多个占位符,这些占位符由后续参数的值替换。这个方法提供了一种灵活的方式来构建包含变量或表达式的字符串。

基本语法

String.Format(string format, object arg0 [, object arg1, ...])

参数

format:一个字符串,包含零个或多个由花括号 {} 包围的占位符。这些占位符的形式可以是 {index[,alignment][:formatString]}
index 是参数的索引,从0开始。
alignment 是可选的,表示占位符的宽度和对齐方式。
formatString 是可选的,表示格式信息,如数字格式、日期格式等。
arg0argN:是要插入到格式化字符串中的参数。
示例
下面是一些使用 String.Format 的示例:

基本使用

string name = "Alice";
int age = 30;
string message = String.Format("Hello, {0}. You are {1} years old.", name, age);
// message 的内容将是 "Hello, Alice. You are 30 years old."

使用索引

string message = String.Format("Hello, {1} and {0}.", "Alice", "Bob");
// message 的内容将是 "Hello, Bob and Alice."

指定对齐和宽度

string message = String.Format("Hello, {0,10}. You are {1,5} years old.", name, age);
// "Alice" 将右对齐并占据至少10个字符的宽度,"30" 将占据至少5个字符的宽度

使用格式字符串

DateTime date = DateTime.Now;
string formattedDate = String.Format("Today is {0:dddd, MMMM dd, yyyy}", date);
// 格式化日期,例如 "Today is Monday, April 03, 2023"

组合使用

string message = String.Format("Hello, {0}. Your balance is {1,10:C}.", name, 123456.78);
// "Alice" 后面跟着一个至少10个字符宽度的货币格式的余额

总结

String.Format 是一个非常强大的工具,可以用来创建具有复杂格式要求的字符串。它在需要将变量插入到字符串模板中时特别有用,例如在生成报告、日志消息或用户界面文本时。

Docker Nacos是一个开源的动态服务发现、配置和服务管理平台,它提供了一个简单易用的Web UI和RESTful API,可以帮助用户轻松地实现微服务架构。在Nacos中开启鉴权可以提高系统的安全性,确保只有授权用户可以访问敏感资源。以下是Docker Nacos开启鉴权的具体步骤: 1. 在Nacos的配置文件(nacos/conf/application.properties)中配置以下参数: ``` nacos.security.enable=true nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/**,/v1/auth/**,/v1/console/**,/actuator/**,/nacos/**,/plugins/**,/app/**,/health/**,/app/*/*/health/**,/proxy/*/*/metrics,/proxy/*/*/prometheus nacos.security.auth.enabled=true nacos.security.auth.configs=nacos.plugin.security.auth.DefaultAuthConfig ``` 其中,nacos.security.enable=true表示开启Nacos的安全模式;nacos.security.ignore.urls是忽略认证的URL列表,包括默认URL和用户自定义URL;nacos.security.auth.enabled=true表示开启Nacos的权限认证功能;nacos.security.auth.configs=nacos.plugin.security.auth.DefaultAuthConfig表示使用默认的权限认证配置。 2. 在Nacos的插件目录(nacos/plugins)下创建一个auth目录,并在该目录下创建一个文件名为nacos-auth.jar的jar包。该jar包包含了自定义的权限认证实现类。 3. 启动Nacos服务,此时Nacos就会自动加载插件目录下的jar包,并使用自定义的权限认证实现类来进行认证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值