【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)

简介: 【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)

一、String类的介绍

String类的属性

C#中自带了一些属性,如字符串的长度,在一个类中,包含有方法和属性,方法用来执行动作,属性用来保存数据 属性是一个封装结构 对外开放

Chars 在当前的String对象中获取Char对象的指定位置

Length 在当前的String对象中获取字符数

创建String类对象 下面是测试代码

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_1 : MonoBehaviour
{
    void Start()
    {
        //字符串,字符串连接
        string fname, lname;
        fname = "张";
        lname = "三";
        string fullname = fname + lname;
        Debug.Log("名字: "+ fullname);
        //通过使用 string 构造函数
        char[] letters = { 'H', 'e', 'l', 'l', 'o' };
        string greetings = new string(letters);
        Debug.Log("使用string构造函数: " + greetings);
        //方法返回字符串
        string[] sarray = { "h", "e", "l", "l", "o" };
        string message = string.Join("", sarray);
        Debug.Log("使用Join方法: "+ message);
        //用于转化值的格式化方法
        DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
        string chat = string.Format("当前时间: {0:t} on {0:D}", waiting);
        Debug.Log("使用Format方法: " + chat);
    }
}

二、字符串的常用操作

1:比较字符串

比较字符串是指按照字典排序规则,判定两个字符的相对大小,按照字典规则,在一本英文字典中,出现在前面的单词小于出现在后面的单词

测试代码如下

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_2 : MonoBehaviour
{
    void Start()
    {
        string str1 = "Hello";
        string str2 = "hello";
        //Equals方法比较str1和str2
        Debug.Log("Equals方法:"+str1.Equals(str2));
        Debug.Log("Equals方法(另一种写法):" + string.Equals(str1, str2));
        //Compare方法比较str1和str2
        Debug.Log("Compare方法(不区分大小写):" + string.Compare(str1, str2));
        Debug.Log("Compare方法(区分大小写):" + string.Compare(str1, str2, true));
        Debug.Log("Compare方法(设置索引,比较长度,不区分大小写):" + string.Compare(str1, 0, str2, 0, 7));       
        Debug.Log("Compare方法(设置索引,比较长度,区分大小写):" + string.Compare(str1, 0, str2, 0, 7, true)); 
    }
}

2:定位字符串

定位字符串是指在一个字符串中寻找其中包含的子字符串或者字符 常用方法如下

StartsWith/EndsWith方法

IndexOf/LastIndexOf方法

根据英文名可以看出含义 不再赘述

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_3 : MonoBehaviour
{
    void Start()
    {
        string str1 = "HelloWorld";
        //StartsWith和EndsWith方法
        //返回一个Boolean值,确定此字符串实例的开始/结尾是否与指定的字符串匹配。
        Debug.Log("StartsWith方法:" + str1.StartsWith("He"));
        Debug.Log("EndsWith方法:" + str1.EndsWith("He"));
        //IndexOf方法
        //返回指定字符或字符串在此实例中指定范围内的第一个匹配项的索引。
        Debug.Log("IndexOf方法(直接搜索):" + str1.IndexOf("H"));
        Debug.Log("IndexOf方法(限定开始查找的位置):" + str1.IndexOf("H", 0));
        Debug.Log("IndexOf方法(限定开始查找的位置,以及查找结束的位置):" + str1.IndexOf("H", 0, 5));
        //LastIndexOf方法
        //从后往前找,返回指定字符或字符串在此实例中指定范围内的第一个匹配项的索引。
        Debug.Log("LastIndexOf方法(直接搜索):" + str1.LastIndexOf("H"));
        Debug.Log("LastIndexOf方法(限定开始查找的位置):" + str1.LastIndexOf("H", 0));
        Debug.Log("LastIndexOf方法(限定开始查找的位置,以及查找结束的位置):" + str1.LastIndexOf("H", str1.Length, 5));
        //IndexOfAny方法 
        //从字符串str1第一个字符开始(0号索引)和字符数组testArr中的元素进行匹配,匹配到了则返回当前索引
        char[] testArr = { 'H', 'W' };
        Debug.Log("IndexOfAny方法(直接搜索):" + str1.IndexOfAny(testArr));
        Debug.Log("IndexOfAny方法(限定开始查找的位置):" + str1.IndexOfAny(testArr, 0));
        Debug.Log("IndexOfAny方法(限定开始查找的位置,以及查找结束的位置):" + str1.IndexOfAny(testArr, 0, 5));
        //LastIndexOfAny方法
        //从后往前找,从字符串str1和字符数组testArr中的元素进行匹配,匹配到了则返回当前索引
        Debug.Log("LastIndexOfAny方法(直接搜索):" + str1.LastIndexOfAny(testArr));
        Debug.Log("LastIndexOfAny方法(限定开始查找的位置):" + str1.LastIndexOfAny(testArr, 0));
        Debug.Log("LastIndexOfAny方法(限定开始查找的位置,以及查找结束的位置):" + str1.LastIndexOfAny(testArr, str1.Length-1, 5));
    }
}

3:格式化字符串

Format方法主要用于将指定的字符串格式化为多种形式,例如可以将字符串转化为十六进制,十进制,保留小数点后几位等等

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_4 : MonoBehaviour
{
    void Start()
    {
        string str1 = string.Format("{0:C}", 2);
        Debug.Log("格式化为货币格式:"+str1);
        str1 = string.Format("{0:D2}", 2);
        Debug.Log("格式化为十进制格式(固定二位数):" + str1);
        str1 = string.Format("{0:D3}", 2);
        Debug.Log("格式化为十进制格式(固定三位数):" + str1);
        str1 = string.Format("{0:N1}", 250000);
        Debug.Log("格式化为分号隔开数字格式(小数点保留1位):" + str1);
        str1 = string.Format("{0:N3}", 250000);
        Debug.Log("格式化为分号隔开数字格式(小数点保留3位):" + str1);
        str1 = string.Format("{0:P}", 0.24583);
        Debug.Log("格式化为百分比格式(默认保留两位小数):" + str1);
        str1 = string.Format("{0:P3}", 0.24583);
        Debug.Log("格式化为百分比格式(保留三位小数):" + str1);
        str1 = string.Format("{0:D}", System.DateTime.Now);
        Debug.Log("格式化为日期格式(XX年XX月XX日):" + str1);
        str1 = string.Format("{0:F}", System.DateTime.Now);
        Debug.Log("格式化为日期格式(XX年XX月XX日 时:分:秒):" + str1);
    }
}

4:连接字符串

Concat方法用于连接两个或多个字符串

join方法利用一个字符数组和一个分隔符字符串构造新的字符串,常用于把多个字符串连接在一起,并用一个特殊的符号分隔开

+连接运算符可以方便的连接多个字符串

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_5 : MonoBehaviour
{
    void Start()
    {
        string str1 = "Hello";
        string str2 = "World";
        string newStr;
        newStr = string.Concat(str1, str2);
        Debug.Log("Concat方法:"+newStr);
        newStr = string.Join("^^", str1, str2);
        Debug.Log("Join方法:" + newStr);
        newStr = str1+str2;
        Debug.Log("连接运算符:" + newStr);
    }
}

5:分割字符串

Split方法可以把一个整字符串,按照某个分隔符,分割成一系列的小的字符串

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_6 : MonoBehaviour
{
    void Start()
    {
        string str1 = "Hello^World";
        char[] separtor = { '^' };
        string[] newStr;
        newStr = str1.Split(separtor);
        for (int i = 0; i < newStr.Length; i++)
        {
            Debug.Log("Split方法:" + newStr[i]);
        }
    }
}

6:插入和填充字符串

可以用insert方法在任意插入任意字符,也可以在指定位置插入字符

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_7 : MonoBehaviour
{
    void Start()
    {
        string str1 = "HelloWorld";
        string newStr = str1.Insert(3, "ABC");
        Debug.Log("Insert方法:" + newStr);
    }
}

7:删除字符串

Remove方法从一个字符串的指定位置开始,删除指定数量的字符

Trim方法可以把一个字符串首尾处的一些特殊字符剪切掉

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_8 : MonoBehaviour
{
    void Start()
    {
        string str1 = "HelloWorld";
        Debug.Log("Remove方法:" + str1.Remove(0, 2));
        string str2 = " Hello World ";
        Debug.Log("Trim方法(去掉前后空格):" + str2.Trim());
        Debug.Log("TrimStart方法(去掉字符串前面空格):" + str2.TrimStart());
        Debug.Log("TrimEnd方法(去掉字符串后面空格):" + str2.TrimEnd());
    }
}

8:复制字符串

Copy方法可以把一个字符串复制到另一个字符数组中

CopyTo方法可以实现Copy同样的功能,但是功能更为丰富,可以只复制字符串的一部分到一个字符数组中

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_9 : MonoBehaviour
{
    void Start()
    {
        string str1 = "HelloWorld";
        Debug.Log("Copy方法:" + string.Copy(str1));
        char[] newChar = new char[3];
        str1.CopyTo(0, newChar, 0, 3);
        for (int i = 0; i < newChar.Length; i++)
        {
            Debug.Log("CopyTo方法:" + newChar[i]);
        }
    }
}

9:替换字符串

要替换一个字符串中的某些特定字符或者某个子字符串,可以使用Replace方法实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_10 : MonoBehaviour
{
    void Start()
    {
        string str1 = "HelloWorld";
        Debug.Log(str1);
        Debug.Log("Replace方法(o->z):" + str1.Replace('o','z'));
        Debug.Log("Replace方法(World->Hello):" + str1.Replace("World", "Hello"));
    }
}

10:更改大小写

String类提供了方便转换字符串中所有字符大小写的方法分别是ToUpper和ToLower

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_11 : MonoBehaviour
{
    void Start()
    {
        string str1 = "HelloWorld";
        Debug.Log(str1);
        Debug.Log("ToLower方法(转小写):" + str1.ToLower());
        Debug.Log("ToUpper方法(转大写):" + str1.ToUpper());
    }
}

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
29天前
|
存储 jenkins 测试技术
Apipost自动化测试:零代码!3步搞定!
传统手动测试耗时低效且易遗漏,全球Top 10科技公司中90%已转向自动化测试。Apipost无需代码,三步实现全流程自动化测试,支持小白快速上手。功能涵盖接口测试、性能压测与数据驱动,并提供动态数据提取、CICD集成等优势,助力高效测试全场景覆盖。通过拖拽编排、一键CLI生成,无缝对接Jenkins、GitHub Actions,提升测试效率与准确性。
71 11
|
29天前
|
人工智能 自然语言处理 测试技术
自然语言生成代码一键搞定!Codex CLI:OpenAI开源终端AI编程助手,代码重构+测试全自动
Codex CLI是OpenAI推出的轻量级AI编程智能体,基于自然语言指令帮助开发者高效生成代码、执行文件操作和进行版本控制,支持代码生成、重构、测试及数据库迁移等功能。
143 0
自然语言生成代码一键搞定!Codex CLI:OpenAI开源终端AI编程助手,代码重构+测试全自动
|
2月前
|
数据处理
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
120 19
|
3月前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
294 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
2月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
79 11
|
2月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
|
2月前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
|
4月前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
128 35
|
2月前
|
Java 程序员
课时16:String字符串
课时16介绍了Java中的String字符串。在Java中,字符串使用`String`类表示,并用双引号定义。例如:`String str = &quot;Hello world!&quot;;`。字符串支持使用“+”进行连接操作,如`str += &quot;world&quot;;`。需要注意的是,当“+”用于字符串与其他数据类型时,其他类型会先转换为字符串再进行连接。此外,字符串中可以使用转义字符(如`\t`、`\n`)进行特殊字符的处理。掌握这些基本概念对Java编程至关重要。
|
4月前
|
JavaScript 前端开发 Java
使用ChatGPT生成关于登录产品代码的单元测试代码
使用ChatGPT生成关于登录产品代码的单元测试代码
70 16