Split string dengan string lain dalam C#

I've telah menggunakan Split() metode untuk membagi string, tapi ini hanya muncul untuk bekerja jika anda memisahkan string berdasarkan karakter. Apakah ada cara untuk membagi string, dengan string lain yang dibagi berdasarkan parameter?

I've mencoba mengkonversi splitter ke dalam sebuah array karakter, tidak berhasil.

Dengan kata lain, saya'd ingin membagi string:

THExxQUICKxxBROWNxxFOX

oleh xx, dan mengembalikan sebuah array dengan nilai-nilai:

, CEPAT, COKLAT, RUBAH

Mengomentari pertanyaan (1)
Larutan

Dalam rangka untuk membagi dengan string anda'll harus menggunakan string array overload.

string data = "THExxQUICKxxBROWNxxFOX";

return data.Split(new string[] { "xx" }, StringSplitOptions.None);
Komentar (14)

Ada overload Split yang mengambil string.

"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);

Anda dapat menggunakan salah satu dari ini StringSplitOptions

  • Tidak ada - mengembalikan nilai mencakup array elemen-elemen yang berisi string kosong
  • RemoveEmptyEntries - nilai kembali tidak termasuk elemen array yang berisi string kosong

Jadi jika string "THExxQUICKxxxxBROWNxxFOX", StringSplitOptions.Tidak ada akan kembali kosong masuk dalam array untuk "xxxx" sementara bagian StringSplitOptions.RemoveEmptyEntries tidak akan.

Komentar (0)
Regex.Split(string, "xx")

ini adalah cara yang saya lakukan biasanya. Tentu saja anda'll perlu

using System.Text.RegularExpressions;

tapi sekali lagi saya perlu bahwa perpustakaan sepanjang waktu.

Komentar (3)

Ada's kelebihan String.Split untuk ini:

"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);
Komentar (1)

Saya biasanya menggunakan ekstensi saya sendiri untuk itu:

string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE  QUICK  BROWN  FOX 

//the extension class must be declared as static
public static class StringExtension
{   
    public static string[] Split(this string str, string splitter)
    {
        return str.Split(new[] { splitter }, StringSplitOptions.None);
    }
}

Namun hal ini akan menyebabkan Pengecualian, jika Microsoft memutuskan untuk menyertakan metode-kelebihan di versi yang lebih baru. Hal ini juga kemungkinan alasan mengapa Microsoft tidak termasuk metode ini sementara: setidaknya satu perusahaan saya bekerja untuk, digunakan perpanjangan tersebut di semua mereka C# proyek.

Hal ini juga mungkin untuk kondisional menentukan metode yang pada saat runtime jika itu doesn't ada.

Komentar (1)

Sebelumnya jawaban semua benar. Aku pergi satu langkah lebih jauh dan membuat C# bekerja untuk saya dengan menentukan metode penyuluhan pada String:

public static string[] Split(this string toSplit, string splitOn) {
    return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
}

Dengan cara itu saya dapat panggilan pada setiap string dalam cara sederhana saya naif diharapkan pertama kali saya mencoba untuk mencapai hal ini:

"a big long string with stuff to split on".Split("g str");
Komentar (0)
string data = "THExxQUICKxxBROWNxxFOX";

return data.Replace("xx","|").Split('|');

Hanya memilih mengganti karakter dengan hati-hati (pilih salah satu yang isn't kemungkinan akan hadir dalam string sudah)!

Komentar (7)

Sebagai dari .NET Core 2.0, ada pengabaian yang mengambil string.

Jadi sekarang anda dapat melakukan "THExxQUICKxxBROWNxxFOX".Split("xx").

Lihat https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_

Komentar (0)

Ini juga mudah:

string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
Komentar (2)

Cara termudah adalah dengan menggunakan String.Ganti:

string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");

Atau lebih sederhana:

string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");
Komentar (2)