美好的一天,
我想根据字母顺序在一行中交换两个字符串。
示例:
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。
答案 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处理最后一部分