【问题标题】:Split a string into String Array in c#在c#中将字符串拆分为字符串数组
【发布时间】:2018-09-24 19:04:45
【问题描述】:

如何将字符串拆分成字符串数组。

我的字符串是这样的

string orgString = "1234-|@$@|-George,Michael -$@%@$-65489-|@$@|-Lawrence,  Steve J  -$@%@$-7897954-|@$@|-Oliver Mike  -$@%@$-56465-|@$@|-Waldimir Tursoky";

现在我希望我的字符串数组存储名称和号码以及-|@$@|-

我尝试了以下代码

string[] strArray = orgString.Split(new string[] {"-$@%@$-"}, StringSplitOptions.RemoveEmptyEntries);

我的输出如下所示:

"1234-|@$@|-George,Michael "

但我想要的输出是(名字在前,号码在后)

"George,Michael -|@$@|-1234"

如何在 C# 中实现这一点?

【问题讨论】:

  • 步骤#1是使用/显示编译 C#代码..
  • 您可以在连字符 '-' 上使用 split,然后您就有机会重新排列字符串。
  • 听起来正则表达式更适合提取这些值
  • @RufusL 更新了我的代码。现在可以编译了

标签: c# split


【解决方案1】:

只需交换结果字符串中的部分:

string orgString = "1234-|@$@|-George,Michael -$@%@$-65489-|@$@|-Lawrence,  Steve J  -$@%@$-7897954-|@$@|-Oliver Mike  -$@%@$-56465-|@$@|-Waldimir Tursoky";
string[] resultingList = orgString.Split(new string[] {"-$@%@$-"}, StringSplitOptions.RemoveEmptyEntries).Select(x=>x.Split(new string[] {"-|@$@|-"}, StringSplitOptions.RemoveEmptyEntries).Aggregate((x11,y)=>{return y+" -|@$@|- "+x11;})).ToArray();
foreach(string result in resultingList)
{
    Console.WriteLine(result);
}

【讨论】:

  • 谢谢。我很感激。我们不能将它放在字符串数组中而不是 var. 中吗?
  • @Santosh 是的,但在这种情况下您需要添加演员表。
  • @Santosh 我改变了答案
【解决方案2】:

你可以再次拆分然后重新组合

string outerDivider = "-$@%@$-";
string innerDivider = "-|@$@|-";

var results = orgString
    // Split by outer divider
    .Split(new string[] { outerDivider }, StringSplitOptions.RemoveEmptyEntries)
    // Then for each of the results, split again on the inner divider
    .Select(x => x.Split(new string[] { innerDivider }, StringSplitOptions.RemoveEmptyEntries))
    // Swap the order of elements around the inner divider and recombine into a string
    .Select(x => string.Join(innerDivider, x[1], x[0]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2022-01-18
    • 2020-02-12
    • 2012-02-22
    相关资源
    最近更新 更多