我哈瓦发送在这样的字符串中的信息来我的应用程序(C#)我的服务器上的PHP文件:拆分数组仅每第三次,当分裂焦炭出现
文字|名称|日期|文本|名称|日期|文本|名称|日期| ......现在我想分割它,以便我可以用文本,名称和日期填充ListViewerItem,这三个的下一个组合(文本,名称,日期)应该在新的ListViewerItem中。 如何在“|”中每三次分割一次字符串?
我哈瓦发送在这样的字符串中的信息来我的应用程序(C#)我的服务器上的PHP文件:拆分数组仅每第三次,当分裂焦炭出现
文字|名称|日期|文本|名称|日期|文本|名称|日期| ......现在我想分割它,以便我可以用文本,名称和日期填充ListViewerItem,这三个的下一个组合(文本,名称,日期)应该在新的ListViewerItem中。 如何在“|”中每三次分割一次字符串?
刚上管道符号和循环分裂与取3:
public void Foo(string content)
{
var entries = content.Split('|');
for(int i = 0; i < entries.Length; i += 3)
{
var text = entries[0 + i];
var name = entries[1 + i];
var date = entries[2 + i];
// TODO: add values to listview.
}
}
分割字符串,然后组字符串:
string[] values = data.Split('|');
List<string[]> lines =
Enumerable.Range(0, values.Length/3)
.Select(
i => new string[] { values[i * 3], values[i * 3 + 1], values[i * 3 + 2] }
)
.ToList();
我假设文字,名称,日期实际上是值,所以唯一常见的分隔符是|。我认为最好的方法是将字符串拆分为|然后循环结果数组。保留一个计数器,每隔三个项目创建一个包含属性Text,Name和Date的对象。然后将该对象添加到列表中,然后将该列表绑定到ListViewer。
var values = "a|b|c|a|b|c|a|b|c|a|b|c|a|b|c|a|b|c|a|b|c|a|b|c".Split('|');
var result = Enumerable.Range(0, values.Length).GroupBy(i => Convert.ToInt32(Math.Floor((i/3d)))).Select(group => String.Join("|", group.Select(i => values[i])));
使用Regex
和LINQ
:
var result = from Match match
in Regex.Matches(inputString, @"((?<t>\w+)\|(?<n>\w+)\|(?<d>\w+))+")
select
new
{
Text = match.Groups["t"].Value,
Name = match.Groups["n"].Value,
Date = match.Groups["d"].Value
};
为什么不使用JSON([PHP](http://php.net/manual/en/book.json.php)[C#](HTTP ://james.newtonking.com/projects/json-net.aspx)) - 将使你的生活更轻松.. – Shai 2012-08-12 07:53:22