【C#】通过扩展对象的方式,对字符串等数据类型进行数据进一步处理

简介: 在本篇文章中,我们讲一起了解下对象扩展的使用在实际项目开发中,对象扩展使用的场景还是挺多的,比如:需要对时间值进行再处理,或者字符串中的斜杠(/)转为反斜杠(\)
作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More
  • 主要知识点列表
编号 语言或插件 知识点 说明
1 C# this 通过this+数据类型+变量名
2 C# ToUpper() 将字符串转为大写
3 C# Substring(下标, 长度) 截取字符串

【扩展对象】

1)必须是在非泛型静态类下定义扩展方法

image.png

2)正确的扩展写法,在class关键词前添加static关键词

3)静态类,成员必须是静态,所以方法也必须设置成静态
image.png

  • 扩展的基础代码格式
public static class TestExtend
{
    public static string FirstBig(this string from_text, string string_text)
    {
        string new_text = string.Empty;

        return new_text;
    }
}

【内置函数实现首字母大写】

通过扩展方法,实现首字母大写的功能,实现的方式有很多

1)首先肯定需要判断字符串是否有值,null和""空值均不做处理

2)如果只存在一个长度字符串,那么直接转为大写返回,

3)如果大于等于两个长度字符串,那么通过截取方法,获取第一字符串以及之后的所有字符串

  • 代码
public static class TestExtend
{
    public static string FirstBig(this string from_text, string string_text)
    {
        string new_text = string.Empty;

        if (string.IsNullOrEmpty(from_text))
        {
            return new_text;
        }
        else if (from_text.Length == 1)
        {
            new_text = from_text.ToUpper();
            return new_text;
        }

        string first_text = from_text.Substring(0, 1);
        string other_text = from_text.Substring(1, from_text.Length - 2);

        new_text = first_text.ToUpper() + other_text;

        return new_text;
    }
}

image.png

4)方法进一步修改完善,通过遍历的方式,把所有单词的首个字母转为大写

  • 代码
public static string FirstBig(this string from_text)
{
    string new_text = string.Empty;

    if (string.IsNullOrEmpty(from_text))
    {
        return new_text;
    }
    else if (from_text.Length == 1)
    {
        new_text = from_text.ToUpper();
        return new_text;
    }

    bool first_flag = false;
    foreach (char item in from_text)
    {
        bool flag = Regex.Matches(item.ToString(), "[a-zA-Z]").Count > 0;
        if (flag && !first_flag)
        {
            first_flag = true;
            new_text += item.ToString().ToUpper();
        }
        else if (flag)
        {
            new_text += item.ToString();
        }
        else
        {
            first_flag = false;
            new_text += item.ToString();
        }
    }

    return new_text;
}
}
  • 效果

image.png

【将字符串中的反斜杠转为斜杠】

1)在windows操作系统下,文件和文件夹的路径是反斜杠方式

image.png

2)如果保存在数据库中,那么在web项目中使用,前端虽然也能识别,但是看着别扭。在一些特殊情况有时会报错,所以需要统一转为斜杠方式

  • 代码
public static class TestExtend
{
    public static string NewPath(this string from_text)
    {
        return from_text.Replace("\\","/");
    }
}

image.png

相关文章
|
3月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
2月前
|
开发框架 .NET API
以C#一分钟浅谈:GraphQL 数据类型与查询
本文从C#开发者的角度介绍了GraphQL的基本概念、核心组件及其实现方法。GraphQL由Facebook开发,允许客户端精确请求所需数据,提高应用性能。文章详细讲解了如何在C#中使用`GraphQL.NET`库创建Schema、配置ASP.NET Core,并讨论了GraphQL的数据类型及常见问题与解决方案。通过本文,C#开发者可以更好地理解并应用GraphQL,构建高效、灵活的API。
122 64
|
12天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
29 11
|
12天前
|
C#
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
|
4月前
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
408 0
|
14天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
41 10
|
14天前
|
程序员 C# 数据库
C# 比较对象新思路,利用反射技术打造更灵活的比较工具
中途接手的项目,碰到需要在更新对象信息时比较并记录差异的需求,最变态的还有附加要求,怎么办?有没有既能满足需求又能对项目影响最小的方法呢?分享这个我封装的方法,一个利用反射技术打造的更灵活的比较工具
|
3月前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
135 65
|
1月前
|
开发框架 .NET 测试技术
C# 一分钟浅谈:GraphQL 数据类型与查询
本文介绍了GraphQL的基本概念、数据类型及查询方法,重点从C#角度探讨了GraphQL的应用。通过Hot Chocolate库的实例,展示了如何在ASP.NET Core中实现GraphQL API,包括安装、定义Schema、配置及运行项目。文中还讨论了常见问题与解决方案,旨在帮助开发者更好地理解和使用GraphQL。
39 2
|
2月前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!