如何按字母顺序在一行中交换两个字符串?

时间:2012-04-06 08:59:49

标签: c#

美好的一天,

我想根据字母顺序在一行中交换两个字符串。

示例:

Arun 2012,Gopi 2010,Dinesh 2012.计算机网络,Tata McGraw Hill。 745:19-22

在这一行中,作者姓名可能是Arun,Dinesh,Gopi必须按字母顺序交换并保存在同一个文件中以供参考。

怎么可能完全交换字符串数组?

以下是我的尝试:

foreach (string strPara in strParaValue) 
{ 
   string[] strAuthorsPart = strPara.Split('.'); 
   string[] strAuthorslist = strAuthorsPart[0].Split(','); 
   string[] strAuthor = strAuthorslist[0].Split(' '); 
   if (strSplitValue[0].Contains(strAuthor[0].Trim())) 
   { 
      swt.WriteLine(strAuthor[0] + "\t"); 
   } 
   else 
   {
      swf.WriteLine(strAuthor[0] + "\t"); 
   }
}

由于 DeeGo。

3 个答案:

答案 0 :(得分:1)

你的意思是这样的吗?

string tosort = " Arun 2012, Gopi 2010, Dinesh 2012. Computer Networks, Tata McGraw Hill. 745:19-22";
string sortedAuthors = "";
string sortedTexts = "";
List<string> mylist = tosort.Split(new[]{',', '.'}).ToList<string>();
mylist.Sort();
mylist.ForEach(n => if(n.Substring.IndexOf(" ").sorted += n + ",");

这将产生输出

  

“745:19-22,Arun 2012,Computer Networks,Dinesh 2012,Gopi 2010,   Tata McGraw Hill,“

根据您的评论,试试这个:

string tosort = " Arun 2012, Gopi 2010, Dinesh 2012. Computer Networks, Tata McGraw Hill. 745:19-22";
string sortedAuthors = "";
string sortedTexts = "";
List<string> mylist = tosort.Split(new[] { ',', '.' }).ToList<string>();
mylist.Sort(); int i;
foreach (var n in mylist)
{
    if (Int32.TryParse(n.Substring(n.IndexOf(' ')).Trim(), out i))
    {
        sortedAuthors += (n + ", ");
    }
    else
    {
        sortedTexts += (n + ", ");
    }
}
string final = sortedAuthors + ", " + sortedTexts;

这将输出

  

,745:19-22,Arun 2012,Computer Networks,Dinesh 2012,Gopi   2010年,塔塔麦格劳希尔,

我相信你可以处理其余的事情。

答案 1 :(得分:0)

首先,你必须得到你在某个容器中排序的字符串,比如Array。例如string [] strings = s.Split(',')。在您的情况下,请确保只获得具有作者姓名的部分。然后,您可以以任何方便的方式对结果数组进行排序,例如:Array.Sort(strings)。然后从它们创建新的字符串:string newline = string.Join(“,”,strings)并将它与之前的内容连接起来。请记住,任何带有字符串修改的操作实际上都会生成新的字符串对象,因为字符串是不可变的,因此不可能进行任何“就地”排序

答案 2 :(得分:0)

找到strAuthorslist后,您的任务很简单:

string[] strAuthorsPart = strPara.Split('.'); 
string[] strAuthorslist = strAuthorsPart[0].Split(','); 
strAuthorslist.Sort();
var newAuthorsArrangement = String.Join(strAuthorslist, ",");
var updatedLine = newAuthorsArrangement  + "." +
                  strPara.SkipWhile(x=>x!='.').ToString();

我使用了.Net 4 SkipWhile方法,但您只需使用.Net 1.1处理最后一部分