[英]Special String splitting in C#
我想分割一個特殊格式的string
:
string example01 = "2016-05-14-Title-863-Pos-01"
該string
必須分為:
date = "2016-05-14";
title = "Title-863";
position = "Pos-01";
我知道我可以使用string.split
或Regex
拆分此string
,但是我想使用格式化分隔符或類似的東西來實現“拆分”功能。
更多示例:
string example02 = "2016-05-15-Rectangle-Right"
string example03 = "2016-05-16-Border-05-Top"
示例方法:
string[] split = SplitString("****-**-**", "-");
因此,第一個參數用作占位符,第二個參數用作分隔符。
您可以使用像這樣的通用BlockSplit方法
string[] BlockSplit(string source, char separator, params int[] blocks)
{
string[] parts = source.Split(separator);
List<string> splitted = new List<string>();
int skipped = 0;
foreach (int x in blocks)
{
string block = string.Join(separator.ToString(), parts.Skip(skipped).Take(x));
skipped += x;
splitted.Add(block);
}
return splitted.ToArray();
}
用您的輸入調用此方法
string test = "2016-05-14-Title-863-Pos-01";
string[] result = BlockSplit(test, '-', new int[] {3,2,2});
foreach(string s in result)
Console.WriteLine(s);
這可以轉換為字符串類的擴展方法 ,並允許使用這種語法
string test = "2016-05-14-Title-863-Pos-01";
string[] result = test.BlockSplit('-', new int[] {3,2,2});
僅當字符串始終使用該確切格式時,此方法才有效。 如果發生任何變化,這將變得容易:
// Original string, has to be in the exact format shown
var test = "2016-05-14-Title-863-Pos-01";
// Split into groups based on the '-' character
var split = test.Split('-');
// Uses string interpolation '$' to build new strings
var date = $"{split[0]}-{split[1]}-{split[2]}";
var title = $"{split[3]}-{split[4]}";
var position $"{split[5]}-{split[6]}";
輸出:
日期:2016-05-14
標題:Title-863
位置:Pos-01
正如Phiter指出的那樣,如果使用的是較舊版本的C#,請使用:
var date = string.Format("{0}-{1}-{2}", split[0], split[1], split[2]);
var title = split[3] + "-" + split[4];
var position = split[5] + "-" + split[6];
如果您的數據格式始終相同,則可以這樣操作:
string test = "2016-05-14-Title-863-Pos-01";
string[] ts = test.Split('-');
string date = ts[0] + "-" + ts[1] + "-" + ts[2];
string title = ts[3] + "-" + ts[4];
string position = ts[5] + "-" + ts[6];
Console.WriteLine(String.Format("Date: {0}\nTitle: {1}\nPosition: {2}", date,title,position));
輸出:
日期:2016-05-14
標題:Title-863
位置:Pos-01
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.