我有一个字符串消息,可能就像
"TRX00 abcd 20150921 "
或喜欢(n)次该字符串,即。
"TRX00 abcd 20150921 TRX00 abcd 20150921 TRX00 abcd 20150921 "
等。
如何在每个子字符串的开头使用"TRX"
像分隔符一样在(n)字符串中拆分该字符串?
我想在子字符串中使用分隔符"TRX"
。
我已经做了以下但是效果不好......
string msg = "TRX00 abcd 20150921 TRX00 abcd 20150921 TRX00 abcd 20150921 ";
string[] _msg;
string pattern = "(TRX)";
string msg2 = "";
if(msg.Contains("TRX"))
{
_msg = Regex.Split(msg, pattern);
foreach (string ok in _msg)
{
msg2 = ok;
MessageBox.Show(msg2);
}
}
预期结果应该是一个子串数组,如:
{ "TRX00 abcd 20150921 ", "TRX00 abcd 20150921 ", etc.. }
答案 0 :(得分:3)
您可以在代码中使用此模式,而不是(TRX)
:
(?!^)(?=TRX)
只要它不在字符串的开头并且返回:
,它将在TRX上分割TRX00 abcd 20150921
TRX00 abcd 20150921
TRX00 abcd 20150921
答案 1 :(得分:0)
如果您确实将“TRX”视为分隔符,则可以使用它来分割字符串,例如:
string msg = "TRX00 abcd 20150921 TRX00 abcd 20150921 TRX00 abcd 20150921 ";
string[] strings = msg.Split(new[] { "TRX" }, StringSplitOptions.None)
.Select(x => "TRX" + x)
.Skip(1)
.ToArray();
然后,您可以转换该分隔集合并重新添加“TRX”。注意我跳过第一个元素(Skip(1)
),就像在这个例子中那样只是空字符串。
答案 2 :(得分:0)
显然,所需的字符串长度为19个字符;只要输入的总长度如下所示,您就可以截断开头;但是这种解决方案对输入格式的改变不是很强大,这使得它有问题。
List<String> Messages = new List<String>();
while (msg.length > 19)
{
var Message = msg.Substring(19);
Messages.Add(Message);
msg = msg.Substring(20, msg.Length-1);
}