c# string记录 原创
c# srting 的操作例子
在C#中,string 类型是一个不可变(immutable)的引用类型,表示文本。由于它的不可变性,对字符串的任何修改操作实际上都会返回一个新的字符串实例。以下是一些常见的 string 操作例子:
- 字符串连接
csharp
string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName; // 使用 + 操作符连接字符串
Console.WriteLine(fullName); // 输出: John Doe
// 或者使用 String.Concat 方法
fullName = String.Concat(firstName, " ", lastName);
Console.WriteLine(fullName); // 输出: John Doe
// C# 6.0 及以上版本可以使用字符串插值
fullName = $"{firstName} {lastName}";
Console.WriteLine(fullName); // 输出: John Doe
- 字符串比较
csharp
string str1 = "Hello";
string str2 = "hello";
// 不区分大小写的比较
bool isEqualIgnoreCase = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);
Console.WriteLine(isEqualIgnoreCase); // 输出: True
// 区分大小写的比较
bool isEqualCaseSensitive = str1.Equals(str2, StringComparison.Ordinal);
Console.WriteLine(isEqualCaseSensitive); // 输出: False
- 字符串查找
csharp
string text = "Hello, world!";
int index = text.IndexOf("world"); // 查找子字符串的索引
Console.WriteLine(index); // 输出: 7
bool contains = text.Contains("world"); // 检查字符串是否包含子字符串
Console.WriteLine(contains); // 输出: True
- 字符串替换
csharp
string original = "Hello, world!";
string replaced = original.Replace("world", "C#"); // 替换字符串中的子字符串
Console.WriteLine(replaced); // 输出: Hello, C#!
- 字符串分割
csharp
string sentence = "Hello, this is a sentence.";
string[] words = sentence.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); // 使用空格和逗号分割字符串
foreach (var word in words)
{
Console.WriteLine(word);
}
// 输出:
// Hello
// this
// is
// a
// sentence
- 字符串格式化
csharp
int number = 123;
string formatted = string.Format("The number is {0:D3}.", number); // 使用字符串格式化
Console.WriteLine(formatted); // 输出: The number is 123.
// 或者使用 $ 字符串插值和复合格式化
formatted = $"The number is {number:D3}.";
Console.WriteLine(formatted); // 输出: The number is 123.
- 字符串截取
csharp
string substring = "Hello, world!".Substring(7); // 从索引7开始截取到字符串末尾
Console.WriteLine(substring); // 输出: world!
// 也可以指定长度
substring = "Hello, world!".Substring(7, 5); // 从索引7开始截取长度为5的子字符串
Console.WriteLine(substring); // 输出: world
- 字符串去空格
csharp
string trimmed = " Hello, world! ".Trim(); // 去除字符串两端的空格
Console.WriteLine(trimmed); // 输出: Hello, world!
// 去除特定字符
string trimmedChars = "!!!Hello, world!!!".Trim('!'); // 去除字符串两端的'!'
Console.WriteLine(trimmedChars); // 输出: Hello, world
这些例子展示了C#中字符串操作的一些基本用法。由于 string 的不可变性,这些操作都不会修改原始字符串,而是返回一个新的字符串。
c#将两个空格或两个以上空格替换为aa
在C#中,如果你想要将字符串中所有两个或两个以上的连续空格替换为"aa",你可以使用正则表达式来实现这一点。正则表达式允许你定义一种模式,该模式可以匹配字符串中的特定部分,并且可以使用这个模式来执行替换操作。
下面是一个使用正则表达式来替换两个或两个以上连续空格为"aa"的示例:
csharp
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello World! This is a test.";
string pattern = @"\s{2,}"; // 匹配两个或两个以上的空白字符
string replacement = "aa";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result); // 输出: HelloaaWorld!aaThis is aa a test.
}
}
在这个示例中,pattern 变量定义了一个正则表达式,该表达式使用 \s 来匹配任何空白字符(包括空格、制表符、换行符等),而 {2,} 则指定了匹配前面的元素(在这个例子中是 \s)两次或更多次。然后,Regex.Replace 方法使用这个模式和替换字符串 “aa” 来替换输入字符串中所有匹配的部分。
请注意,这个正则表达式会匹配任何两个或两个以上的连续空白字符,并将它们替换为 “aa”。如果你只想替换空格(而不是其他类型的空白字符),你可以稍微修改正则表达式,使用 [ ]{2,} 来明确指定只匹配空格字符:
csharp
string pattern = @"[ ]{2,}"; // 只匹配两个或两个以上的空格字符
这将确保只有空格字符(而不是其他类型的空白字符,如制表符或换行符)会被替换为 “aa”。然而,在大多数情况下,如果你的目标是处理文本中的空格,并且不介意其他类型的空白字符也被替换,那么使用 \s{2,} 是更通用的选择。
回车键对应的字符
回车键对应的字符在计算机中通常用于表示换行,但在不同的操作系统和上下文中,其表示方式可能有所不同。
一、不同操作系统中的回车换行符
Windows系统:
在Windows系统中,回车对应的字符通常是回车符(Carriage Return,简称CR)和换行符(Line Feed,简称LF)的组合,即“\r\n”。这里,“\r”代表回车符,将光标移动到行首(实际上在大多数现代文本编辑器中不会真的将光标移回行首,而是保留在行尾),“\n”代表换行符,将光标移动到下一行的开始位置。
Unix/Linux系统:
在Unix和Linux系统中,回车对应的字符仅仅是换行符(Line Feed,简称LF),即“\n”。这意味着在这些系统中,换行操作仅通过换行符来实现,没有单独的回车符。
MacOS系统(早期版本):
早期的MacOS系统(在Mac OS X之前)使用的是回车符(Carriage Return,简称CR),即“\r”作为换行字符。但自Mac OS X起,MacOS系统逐渐与Unix/Linux系统接轨,采用换行符(LF,“\n”)作为换行字符。
二、回车键在文本编辑和程序开发中的作用
文本编辑:在文本编辑器中,回车键的主要作用是换行。无论在哪个操作系统中,按下回车键都会在光标位置插入一个换行符,从而将文本分隔到下一行。
程序开发:在编程和脚本语言中,回车符(或换行符)也扮演着重要角色。它们用于分隔代码的不同部分,如语句、函数定义等。在执行程序时,编译器或解释器会根据换行符来识别代码的结构。
三、总结
回车键对应的字符在不同操作系统中有所不同,主要是由于历史和技术原因造成的。在Windows系统中是“\r\n”,在Unix/Linux和现代的MacOS系统中是“\n”。了解这些差异对于跨平台开发和文件交换非常重要,以确保文本和代码的正确处理和显示。
c# 中获取string后缀
在C#中,如果你想要获取一个字符串(string)的后缀,即字符串的末尾部分,你可以使用几种不同的方法。最直接的方法之一是使用Substring方法,该方法允许你基于索引位置来截取字符串的一部分。但是,在获取后缀时,你首先需要知道你想要截取多少个字符,或者基于某个特定的分隔符来截取。
基于固定长度的后缀
如果你知道你想要获取的后缀的长度是固定的,你可以这样做:
csharp
string originalString = "HelloWorld";
int suffixLength = 5; // 比如你想要获取的后缀长度为5
if (originalString.Length >= suffixLength)
{
string suffix = originalString.Substring(originalString.Length - suffixLength);
Console.WriteLine(suffix); // 输出 "World"
}
else
{
Console.WriteLine("字符串长度不足以获取所需长度的后缀");
}
基于特定分隔符的后缀
如果后缀是基于某个特定分隔符(如.、_等)来定义的,你可以先找到这个分隔符在字符串中的位置,然后截取分隔符之后的部分作为后缀。这通常涉及到LastIndexOf方法和Substring方法的组合使用。
csharp
string originalString = "example.txt";
char separator = '.';
int separatorIndex = originalString.LastIndexOf(separator);
if (separatorIndex != -1)
{
string suffix = originalString.Substring(separatorIndex + 1);
Console.WriteLine(suffix); // 输出 "txt"
}
else
{
Console.WriteLine("字符串中未找到分隔符");
}
注意事项
使用Substring方法时,确保不要超出字符串的界限,否则将抛出ArgumentOutOfRangeException异常。
当你基于特定分隔符查找后缀时,如果分隔符不存在于字符串中,LastIndexOf将返回-1。确保检查这个返回值以避免异常。
在处理文件名或路径等字符串时,你可能还需要考虑路径分隔符(如\或/)的特殊情况,这些字符在字符串中可能具有特殊含义。
通过上述方法,你可以灵活地获取C#中字符串的后缀部分。