C# 字符串(String)

文章目录

  • 前言
  • [创建 String 对象的方式](#创建 String 对象的方式)
    • [1. 通过给 String 变量指定一个字符串](#1. 通过给 String 变量指定一个字符串)
    • [2. 通过使用 String 类构造函数](#2. 通过使用 String 类构造函数)
    • [3. 通过使用字符串串联运算符( + )](#3. 通过使用字符串串联运算符( + ))
    • [4. 通过检索属性或调用一个返回字符串的方法](#4. 通过检索属性或调用一个返回字符串的方法)
    • [5. 通过格式化方法来转换一个值或对象为它的字符串表示形式](#5. 通过格式化方法来转换一个值或对象为它的字符串表示形式)
  • [String 类的属性](#String 类的属性)
  • [String 类的方法](#String 类的方法)
  • 相关实例演示

前言

在 C# 中,虽然可以使用字符数组来表示字符串,但更为常见的做法是运用 string 关键字声明字符串变量。实际上,string 关键字是 System.String 类的别名,这意味着我们在使用 string 进行操作时,本质上就是在操作 System.String 类的实例。

创建 String 对象的方式

1. 通过给 String 变量指定一个字符串

这是最为直观的方式,直接将一个具体的字符串赋值给声明的 string 变量,例如:

csharp 复制代码
string message = "Hello, World!";

2. 通过使用 String 类构造函数

可以利用字符数组等方式通过构造函数来创建 String 对象,如下所示:

csharp 复制代码
char[] letters = { 'H', 'e', 'l', 'l','o' };
string greetings = new string(letters);

3. 通过使用字符串串联运算符( + )

能够将多个字符串或者包含字符串的表达式通过 + 运算符连接起来形成新的字符串,像这样:

csharp 复制代码
string fname = "Rowan";
string lname = "Atkinson";
string fullname = fname + lname;

4. 通过检索属性或调用一个返回字符串的方法

比如从某个对象中获取其返回字符串类型的属性值,或者调用返回字符串的方法来得到 String 对象,示例如下:

csharp 复制代码
string[] sarray = { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);

5. 通过格式化方法来转换一个值或对象为它的字符串表示形式

借助格式化方法,可以把如日期、数值等不同类型的数据按照特定格式转换为字符串,例如:

csharp 复制代码
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);

String 类的属性

String 类包含以下两个常用属性:
Chars: 用于在当前 String 对象中获取指定位置的 Char 对象。通过它能够访问字符串中特定索引位置上的字符。
Length: 可以获取当前 String 对象中包含的字符数量,方便我们知晓字符串的长度信息,在很多涉及字符串处理的逻辑中,比如循环遍历字符串等场景经常会用到。

String 类的方法



相关实例演示

比较字符串实例

以下代码演示了使用 String.Compare 方法来比较两个字符串是否相等(区分大小写情况):

csharp 复制代码
using System;

namespace StringApplication
{
    class StringProg
    {
        static void Main(string[] args)
        {
            string str1 = "This is test";
            string str2 = "This is text";

            if (String.Compare(str1, str2) == 0)
            {
                Console.WriteLine(str1 + " and " + str2 + " are equal.");
            }
            else
            {
                Console.WriteLine(str1 + " and " + str2 + " are not equal.");
            }
            Console.ReadKey();
        }
    }
}

编译并执行上述代码,会输出相应结果表明两个字符串是否相等。

字符串包含字符串实例

下面的代码展示了运用 Contains 方法来判断一个字符串中是否包含特定的子字符串:

csharp 复制代码
using System;

namespace StringApplication
{
    class StringProg
    {
        static void Main(string[] args)
        {
            string str = "This is test";
            if (str.Contains("test"))
            {
                Console.WriteLine("The sequence 'test' was found.");
            }
            Console.ReadKey();
        }
    }
}

执行后会根据是否包含指定子字符串输出对应的提示信息。

获取子字符串实例

以下示例代码演示了如何通过 Substring 方法从一个字符串中获取指定位置开始的子字符串:

csharp 复制代码
using System;
namespace StringApplication
{
    class StringProg
    {
        static void Main(string[] args)
        {
            string str = "Last night I dreamt of San Pedro";
            Console.WriteLine(str);
            string substr = str.Substring(23);
            Console.WriteLine(substr);
            Console.ReadKey();
        }
    }
}

运行代码后会输出原始字符串以及提取出来的子字符串内容。

连接字符串实例

这段代码体现了使用 String.Join 方法将字符串数组中的元素按照指定分隔符连接成一个字符串的操作:

csharp 复制代码
using System;

namespace StringApplication
{
    class StringProg
    {
        static void Main(string[] args)
        {
            string[] starray = new string[]{"Down the way nights are dark",
            "And the sun shines daily on the mountain top",
            "I took a trip on a sailing ship",
            "And when I reached Jamaica",
            "I made a stop"};

            string str = String.Join("\n", starray);
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }
}

执行代码后会按照设定的换行符分隔,输出连接后的字符串内容。

相关推荐
xlsw_2 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹3 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫4 小时前
泛型(2)
java
超爱吃士力架4 小时前
邀请逻辑
java·linux·后端
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石4 小时前
12/21java基础
java
拭心4 小时前
Google 提供的 Android 端上大模型组件:MediaPipe LLM 介绍
android
李小白664 小时前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp4 小时前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea