ถ้าฉันต้องการแยกสตริงโดยใช้ตัวคั่นที่เป็นคำ
ตัวอย่างเช่นThis is a sentence
.
ฉันต้องการที่จะแยกis
และได้รับและThis
a sentence
ในJava
ฉันสามารถส่งสตริงเป็นตัวคั่น แต่ฉันจะทำสิ่งนี้ได้C#
อย่างไร
ถ้าฉันต้องการแยกสตริงโดยใช้ตัวคั่นที่เป็นคำ
ตัวอย่างเช่นThis is a sentence
.
ฉันต้องการที่จะแยกis
และได้รับและThis
a sentence
ในJava
ฉันสามารถส่งสตริงเป็นตัวคั่น แต่ฉันจะทำสิ่งนี้ได้C#
อย่างไร
คำตอบ:
http://msdn.microsoft.com/en-us/library/system.string.split.aspx
ตัวอย่างจากเอกสาร:
string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] {"[stop]"};
string[] result;
// ...
result = source.Split(stringSeparators, StringSplitOptions.None);
foreach (string s in result)
{
Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
คุณสามารถใช้วิธีRegex.Split ได้ดังนี้:
Regex regex = new Regex(@"\bis\b");
string[] substrings = regex.Split("This is a sentence");
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
แก้ไข : สิ่งนี้เป็นไปตามตัวอย่างที่คุณให้ โปรดทราบว่าสตริงธรรมดาแยกจะแบ่งใน " เป็น " ในตอนท้ายของคำว่า "นี่" ดังนั้นทำไมฉันใช้วิธีRegexและรวมถึงขอบเขตคำรอบ " เป็น " อย่างไรก็ตามโปรดทราบว่าหากคุณเพิ่งเขียนตัวอย่างนี้ด้วยความผิดพลาดString.Splitอาจจะพอเพียง
จากการตอบกลับที่มีอยู่ของโพสต์นี้ทำให้การติดตั้งง่ายขึ้น :)
namespace System
{
public static class BaseTypesExtensions
{
/// <summary>
/// Just a simple wrapper to simplify the process of splitting a string using another string as a separator
/// </summary>
/// <param name="s"></param>
/// <param name="pattern"></param>
/// <returns></returns>
public static string[] Split(this string s, string separator)
{
return s.Split(new string[] { separator }, StringSplitOptions.None);
}
}
}
string s = "This is a sentence.";
string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None);
for(int i=0; i<res.length; i++)
Console.Write(res[i]);
แก้ไข: "is" ถูกทับทั้งสองด้านพร้อมช่องว่างในอาร์เรย์เพื่อรักษาความจริงที่ว่าคุณเพียงต้องการให้คำว่า "คือ" ลบออกจากประโยคและคำว่า "นี่" ยังคงไม่บุบสลาย
... โดยย่อ:
string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
คุณสามารถใช้ String.Replace () เพื่อแทนที่สตริงการแยกที่คุณต้องการด้วยอักขระที่ไม่ได้เกิดขึ้นในสตริงและจากนั้นใช้ String.Split กับตัวละครนั้นเพื่อแยกสตริงผลลัพธ์เป็นเอฟเฟกต์เดียวกัน
หรือใช้รหัสนี้ (เหมือนกัน: สตริงใหม่ [])
.Split(new[] { "Test Test" }, StringSplitOptions.None)
นี่คือฟังก์ชั่นส่วนขยายเพื่อทำการแยกด้วยตัวคั่นสตริง:
public static string[] Split(this string value, string seperator)
{
return value.Split(new string[] { seperator }, StringSplitOptions.None);
}
ตัวอย่างการใช้งาน:
string mystring = "one[split on me]two[split on me]three[split on me]four";
var splitStrings = mystring.Split("[split on me]");
var dict = File.ReadLines("test.txt")
.Where(line => !string.IsNullOrWhitespace(line))
.Select(line => line.Split(new char[] { '=' }, 2, 0))
.ToDictionary(parts => parts[0], parts => parts[1]);
or
enter code here
line="to=xxx@gmail.com=yyy@yahoo.co.in";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);
ans:
tokens[0]=to
token[1]=xxx@gmail.com=yyy@yahoo.co.in
string strData = "This is much easier"
int intDelimiterIndx = strData.IndexOf("is");
int intDelimiterLength = "is".Length;
str1 = strData.Substring(0, intDelimiterIndx);
str2 = strData.Substring(intDelimiterIndx + intDelimiterLength, strData.Length - (intDelimiterIndx + intDelimiterLength));