2025-10-02
C#
00

在编程中,我们经常需要从字符串中提取部分内容。在处理多语言和多字符类型(如汉字、全角字符)字符串时,字符可能占用不同的字节长度。为了解决这个问题,本文将介绍如何在 C# 中从一个混合字符串中按字节计数准确提取子字符串。

应用场景

以下是一些需要按字节计算提取字符串的场景:

  1. 文本显示限制:为了保证界面上一行字符的排列整齐,可能需要根据显示区域的字节限制提取字符串。
  2. 文件格式解析:一些文件格式可能要求字段长度按字节计算,尤其是在多语言环境下。
  3. 数据库存储优化:在某些数据库中,需要根据字节长度截取字符串以确保数据不超长。

在处理这些问题时,我们需要考虑字符串中的字符是以几字节为单位,如汉字通常为2字节,而全角字符也通常以2字节表示。

代码实现

以下代码展示了如何在 C# 中编写一个方法,按字节长度从字符串中提取子字符串。

2025-10-02
C#
00

这个版本完善了一下对特殊字符的处理,在现代应用程序中,CSV(Comma-Separated Values)格式是数据导入和导出的常见选择。这是由于CSV简单、易读、跨平台的特性。然而,当处理包含特殊字符的数据时,可能会出现一些复杂性。在这篇文章中,我们将设计一个通用的C#类来处理CSV文件中的导入和导出,包括对特殊字符的处理。

设计通用CSV导入与导出类

我们将创建一个名为CsvHelper的类,其中包含用于导入和导出CSV文件的功能。这些功能将确保数据中包含的特殊字符(如引号、逗号和换行符等)可以被正确地处理。

2025-10-02
C#
00

解析 JSON 数据是现代应用程序开发中常见且重要的任务之一。在 C# 中,使用 Newtonsoft.Json 库可以方便地将 JSON 数据解析并映射到我们所需要的对象类型。本文将详细介绍如何将 JSON 数组解析到匿名类型的 List<T> 中。

准备工作

在开始之前,请确保你的开发环境已安装 .NET Core SDK 或 .NET Framework,并且已配置 Visual Studio 或 VS Code 等开发工具。

安装 Newtonsoft.Json 库

Newtonsoft.Json 是 C# 最流行的 JSON 处理库之一,我们可以使用它来处理 JSON 数据。在命令行中运行以下命令以在项目中添加该包:

2025-10-02
C#
00

在现代企业应用程序开发中,处理复杂的主从数据结构是常见的需求。例如,在订单管理系统中,一个订单(主数据)会有多个订单项(子数据)。传统的关系型数据库可能需要多表关联和复杂的事务处理,而通过将子数据保存为JSON字符串,可以简化这些繁琐的操作。本文将详细介绍如何在C#中实现这个过程。

背景介绍

主数据与子数据

主数据与子数据的关系可以通过一个简单的实例来描述。假设我们有一个订单表(Order)和订单项表(OrderItem)。

  • 表结构:
    • Order 表:包含订单ID、客户ID、订单日期等
    • OrderItem 表:包含订单项ID、订单ID、商品ID、数量、单价等

优化思路

通过将 OrderItem 转换为 JSON 字符串,并将其存储到 Order 表中的一个字段中,可以简化数据结构和操作复杂性。虽然这种方法降低了数据的规范化程度,但在很多场景下,可以提高开发和维护效率。

2025-10-02
C#
00

引言

.NET 8 带来了一系列新特性和改进,旨在提升性能、引入高级语言特性,并扩展.NET框架的跨平台支持。本文将重点探讨.NET 8中的关键更新,特别是C# 12中的新语言功能。

C# 12 语言增强

1. 增强的模式匹配

C# 12提供了更强大的模式匹配功能,让我们能够编写更简洁、更富有表现力的代码。

列表模式

现在我们可以使用列表模式来匹配数组或列表的内容:

C#
public static void Main() { int[] numbers = { 1, 2, 3, 4, 5 }; if (numbers is [1, 2, .. var rest]) { Console.WriteLine($"The array starts with 1 and 2, followed by {rest.Length} more elements"); } Console.ReadKey(); }

扩展的属性模式

属性模式现在可以更深入地匹配嵌套属性:

C#
public record Person(string Name, Address Address); public record Address(string Street, string City); var person = new Person("John Doe", new Address("123 Main St", "Anytown")); if (person is { Name: "John Doe", Address: { City: "Anytown" } }) { Console.WriteLine("Found John Doe from Anytown"); }

image.png