跳過到頁腳內容
.NET幫助

C# 分割字串(開發者的工作原理)

無論您是程式設計新手或是 C# 開發新秀,瞭解如何分割字串都是一項基本技能,可大幅提升您的編碼能力。 在本教程中,我們將深入介紹 C# 中的分割操作。

分割字串簡介

在程式設計中,字串是一連串的字元,在某些情況下,您可能需要根據特定的分隔符或定界符將字串分割成較小的部分。 此過程稱為 字串分割,是處理文字資料時不可或缺的技術。 想像您有一個句子,而您想要將它分隔成單獨的字詞 - 這就是典型的字串分割範例。

在 C# 中,String.Split() 是完成此任務的首選工具。 Split 方法允許您根據指定的分隔符將字串分割成子字串陣列。 讓我們深入瞭解有效使用此方法的各個面向。

使用 String.Split()

基本字串分割

String.Split() 方法最直接的用法是提供單一字元分隔符號。 以下是如何將一個句子拆分成幾個字:

// Define a sentence to split
string sentence = "Hello, world! Welcome to C# programming.";
// Define the character separator
char separator = ' '; // Space character
// Split the sentence into words
string[] words = sentence.Split(separator);
// Define a sentence to split
string sentence = "Hello, world! Welcome to C# programming.";
// Define the character separator
char separator = ' '; // Space character
// Split the sentence into words
string[] words = sentence.Split(separator);
' Define a sentence to split
Dim sentence As String = "Hello, world! Welcome to C# programming."
' Define the character separator
Dim separator As Char = " "c ' Space character
' Split the sentence into words
Dim words() As String = sentence.Split(separator)
$vbLabelText   $csharpLabel

在這個範例中,句子被分成一個字串陣列,每個元素代表一個字。 這裡的分隔符是空格符號。 您可以調整分隔符,以根據不同的標準分割字串,例如逗號、分號或您選擇的任何其他字元。

處理空陣列元素

有時候,在分割字串時,可能會遇到連續的分隔符會導致陣列元素為空的情況。 例如,考慮字串 apple,,banana,orange。 如果您使用逗號作為分隔符來分割,最後會得到一個在連續逗號之間包含空元素的陣列。

要處理這個問題,您可以使用 StringSplitOptions.RemoveEmptyEntries 選項:

// Define a string with consecutive separators
string fruits = "apple,,banana,orange";
char separator = ','; // Separator character

// Split and remove empty entries
string[] fruitArray = fruits.Split(new char[] { separator }, StringSplitOptions.RemoveEmptyEntries);
// Define a string with consecutive separators
string fruits = "apple,,banana,orange";
char separator = ','; // Separator character

// Split and remove empty entries
string[] fruitArray = fruits.Split(new char[] { separator }, StringSplitOptions.RemoveEmptyEntries);
' Define a string with consecutive separators
Dim fruits As String = "apple,,banana,orange"
Dim separator As Char = ","c ' Separator character

' Split and remove empty entries
Dim fruitArray() As String = fruits.Split(New Char() { separator }, StringSplitOptions.RemoveEmptyEntries)
$vbLabelText   $csharpLabel

使用此選項,由連續分隔符造成的空陣列元素將自動從結果陣列中移除。

使用多重分隔符分割

在更複雜的情況下,您可能需要使用多個字元作為分隔符來分割字串。 假設你有一個類似 apple;banana orange 的字串,你想用分號和空格作為分隔符號將其拆分。

為此,您可以使用帶有 string.Split() 參數的方法:

// Define a string with multiple delimiters
string fruits = "apple;banana orange";
char[] separators = { ';', ' ' }; // Multiple separators

// Split the string using multiple delimiters
string[] fruitArray = fruits.Split(separators);
// Define a string with multiple delimiters
string fruits = "apple;banana orange";
char[] separators = { ';', ' ' }; // Multiple separators

// Split the string using multiple delimiters
string[] fruitArray = fruits.Split(separators);
' Define a string with multiple delimiters
Dim fruits As String = "apple;banana orange"
Dim separators() As Char = { ";"c, " "c } ' Multiple separators

' Split the string using multiple delimiters
Dim fruitArray() As String = fruits.Split(separators)
$vbLabelText   $csharpLabel

這將產生一個包含三個元素的陣列:applebananaorange

限制子串數量

在某些情況下,您可能想要將字串分割成數量有限的子字串。 這在處理長字串或只對特定數量的片段感興趣時會很有用。 String.Split() 方法可讓您指定要產生的最大子字串數量:

// Define a long string to split
string longString = "one,two,three,four,five";
char separator = ','; // Separator character
int maxSubstrings = 3; // Limit to the first three substrings

// Split the string with a limit on the number of substrings
string[] firstThreeItems = longString.Split(separator, maxSubstrings);
// Define a long string to split
string longString = "one,two,three,four,five";
char separator = ','; // Separator character
int maxSubstrings = 3; // Limit to the first three substrings

// Split the string with a limit on the number of substrings
string[] firstThreeItems = longString.Split(separator, maxSubstrings);
' Define a long string to split
Dim longString As String = "one,two,three,four,five"
Dim separator As Char = ","c ' Separator character
Dim maxSubstrings As Integer = 3 ' Limit to the first three substrings

' Split the string with a limit on the number of substrings
Dim firstThreeItems() As String = longString.Split(separator, maxSubstrings)
$vbLabelText   $csharpLabel

maxSubstrings 參數設為 3,則產生的陣列將包含 onetwothree。 字串的其餘部分(four,five)保持不變。

建立您的字串分割擴充套件

雖然內建的 String.Split() 方法可以滿足您的大部分字串分割需求,但您也可以建立自己的擴充方法,以根據您的要求自訂功能。 比方說,您想要根據特定子串而非單一字元分割字串。 您可以這樣做

using System;

namespace StringSplitExtension
{
    // Define a static class to hold the extension method
    public static class StringExtensions
    {
        // Extension method for splitting a string by a substring
        public static string[] SplitBySubstring(this string input, string s)
        {
            return input.Split(new string[] { s }, StringSplitOptions.None);
        }
    }

    // Test the extension method
    class Program
    {
        static void Main(string[] args)
        {
            string text = "apple+banana+orange";
            string separator = "+"; // Substring separator

            // Use the custom extension method to split the string
            string[] result = text.SplitBySubstring(separator);
            foreach (string item in result)
            {
                Console.WriteLine(item);
            }
        }
    }
}
using System;

namespace StringSplitExtension
{
    // Define a static class to hold the extension method
    public static class StringExtensions
    {
        // Extension method for splitting a string by a substring
        public static string[] SplitBySubstring(this string input, string s)
        {
            return input.Split(new string[] { s }, StringSplitOptions.None);
        }
    }

    // Test the extension method
    class Program
    {
        static void Main(string[] args)
        {
            string text = "apple+banana+orange";
            string separator = "+"; // Substring separator

            // Use the custom extension method to split the string
            string[] result = text.SplitBySubstring(separator);
            foreach (string item in result)
            {
                Console.WriteLine(item);
            }
        }
    }
}
Imports System

Namespace StringSplitExtension
	' Define a static class to hold the extension method
	Public Module StringExtensions
		' Extension method for splitting a string by a substring
		<System.Runtime.CompilerServices.Extension> _
		Public Function SplitBySubstring(ByVal input As String, ByVal s As String) As String()
			Return input.Split(New String() { s }, StringSplitOptions.None)
		End Function
	End Module

	' Test the extension method
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim text As String = "apple+banana+orange"
			Dim separator As String = "+" ' Substring separator

			' Use the custom extension method to split the string
			Dim result() As String = text.SplitBySubstring(separator)
			For Each item As String In result
				Console.WriteLine(item)
			Next item
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

在這個例子中,我們定義了一個名為 SplitBySubstring 的擴展,它接受一個子字串分隔符號作為輸入,並使用內建的 String.Split() 方法和給定的分隔符號。 這種方法擴展了 C# 的 string 類別的功能,同時保持程式碼的組織性和可重複使用性。

Iron Suite: A Powerful Collection of Libraries for C#

Iron Suite 是一套全面的工具,專為增強 C# 開發人員的能力而設計,提供跨不同領域的進階功能。 從文件處理到光學字元識別 (OCR),這些函式庫是任何現代開發工具包的重要組成部分。 有趣的是,它們可能與 C# 中的 String.Split() 方法有關,這是 C# 中的一個基本字串操作函數。

IronPDF:將 HTML 轉換為 PDF

IronPDF 可讓開發人員直接在 .NET 應用程式中 將 HTML 繪製成 PDFs。 這個功能強大的函式庫有助於建立、編輯甚至是擷取 PDF 內容。 它提供直觀的 API,讓 PDF 操作就像執行 Split String 等字串操作一樣簡單直接。 有關使用 IronPDF 的進一步資訊、教學和指導,請造訪 IronPDF 的網站HTML to PDF 教學

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronXL:卓越的 Excel 作業

當需要在 C# 應用程式中處理 Excel 檔案時,IronXL.Excel 是最佳的函式庫。 它可以讓開發人員輕鬆地讀取、寫入和處理 Excel 檔案,就像透過 C# 來處理 String 的操作一樣。

IronOCR:光學字元辨識

IronOCR 是將 OCR 功能整合至應用程式的開發人員必備的函式庫。 利用 IronOCR,您可以讀取影像和掃描文件中的文字,並將它們轉換成可管理的字串,就像您可能會使用 C# Split String 來處理的字串一樣。 請造訪 IronOCR 網站,進一步瞭解 IronOCR 以及如何將它整合到您的專案中。

IronBarcode:BarCode 掃描與產生。

最後,Iron Suite 包括 IronBarcode,這是在 C# 應用程式中讀取與產生條碼的全面解決方案。 此程式庫將 BarCode 操作的複雜度降低到與 C# 等字串操作相若的程度。

結論

Iron Suite 包含 IronPDF、IronXL、IronOCR 和 IronBarcode 等多個元件,可為處理 PDF、Excel 檔案、OCR 和條碼的開發人員提供簡單的解決方案。 透過簡化複雜的操作,就像 C# Split String 方法簡化字串操作一樣,這些函式庫是現代開發人員的好工具。

這些產品都提供 免費試用,讓您探索和試用全部功能。 每個產品的授權價格從 liteLicense 起,為使用者提供經濟實惠的進階功能入門途徑。

只需支付兩個單獨產品的價格,即可購買完整的 Iron Suite 套件。 此捆綁式產品不僅擴展了您開發工具包的功能,也代表了卓越的價值。

常見問題解答

String.Split() 方法在 C# 中是如何運作的?

C# 中的 String.Split() 方法根據指定的分隔符字元將字串分割成子字串的陣列。這對於有效解析和管理字串資料非常有用。

有哪些進階方法可以在 C# 中分割字串?

C# 中的進階字串分割可以包含使用多個分隔符、使用 StringSplitOptions.RemoveEmptyEntries 移除空項,以及在 Split 方法中增加一個參數限制子字串的數量。

我可以在 C# 中創建一個自定義方法來分割字串嗎?

可以,您可以定義擴充方法來創建自定義的字串分割功能。例如,您可以使用 SplitBySubstring 擴充方法根據特定子字串而不是單個字元來分割字串。

什麼是 C# 開發人員的 Iron Suite?

Iron Suite 是一組強大的程式庫集合,旨在增強 C# 的開發。它包括像 IronPDF 這樣的工具,用於 PDF 操作、IronXL 用於 Excel 操作、IronOCR 用於光學字元識別、以及 IronBarcode 用於條碼生成。

如何在 C# 應用程式中將 HTML 轉換為 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字串轉換為 PDF。此外,您可以使用 RenderHtmlFileAsPdf 方法將 HTML 文件轉換為 PDF。

IronOCR 為 C# 應用程式提供了哪些功能?

IronOCR 允許將光學字元識別集成到 C# 應用程式中,使從圖像和掃描的文件中讀取和轉換文字為可編輯和可管理的字串成為可能。

Iron Suite 的授權選擇有哪些?

Iron Suite 為每個產品提供免費試用,授權從 'liteLicense' 開始。一個完整套件包的價格相當於兩個單獨產品的價格,為開發人員提供極具價值的選擇。

IronPDF 如何簡化 .NET 中的 PDF 操作?

IronPDF 提供了一個直觀的 API,用於在 .NET 應用程式中創建、編輯和提取 PDF 的內容,使開發人員能夠輕鬆和高效地操作 PDF。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我