C#字符串排序-倒序输出

  大家好我是小唐!前两天分享了一个图文混排,就是聊天的时候用到的文字和表情一起输出,但是在处理字符串的时候的时候我们都是按照从左到右的顺序进行的,我的聊天内容和其它人的聊天内容是有区别的,所以要做一些特别的处理。先看一下图就明白了:

C#字符串排序-倒序输出_第1张图片

看我输入的,从左到右的输入顺序,其他人的聊天内容也是从左到右的,这个顺序是没有错误的,但是我自己的聊天内容却是从右到左的,看一下两个输出的内容就知道图片的位置明显不对了,本来先输出的确实最后输出了,原因是我们从左到右的时候图片和文字都是左上对齐的,从右到左的输出顺序要右上对齐,这样怎么办呢?后来我自己举了一个小示例,看了一下,其实解决的时候没有那么麻烦,直接把我们要处理的字符串先倒序排列一下在放在图文混排字符串中去处理,输出的内容就对了。

比如说: //原:{01}{02}你好{03}世界{04}
   //运算:{04}世界{03}你好{02}{01}
   //输出:{01}{02}你好{03}世界{04}

这个运算就是倒序之后的内容,只是把图片和文字位置倒序,但是文字的组合却不倒序,再把运算的这个字符串放在图文混排的处理中去处理,输出后就得到我们想要的效果了,这就是解决从右到左这个相反的方法:

倒序排列的代码:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class SortStrDeal : MonoBehaviour 
{
    static SortStrDeal current;

    //原:{01}{02}你好{03}世界{04}
    //运算:{04}世界{03}你好{02}{01}
    //输出:{01}{02}你好{03}世界{04}

    //原字符串
    string Str="{01}{02}你好{3}世界{04}嘻嘻";
    //截取后字符串
    string NewStr=string.Empty;
    //排序后字符串
    public static string SortStr=string.Empty;
    List StrList=new List();

	// Use this for initialization
    void Start () 
    {
        current = this;
        StrDeal(Str);
	}

    public static void DealStr(string str)
    {
        current.StrDeal(str);
    }

    /// 
    /// 把字符串截取放在StrList集合中
    /// 
    /// 要截取的字符串
    void StrDeal(string str)
    {
        if (string.IsNullOrEmpty(str))
        {
            Sort();
            return;
        }

        int StartIndex = str.IndexOf("{");
        int EndIndex = str.IndexOf("}");
       
        string text;
        if (StartIndex > -1)
        {
            text = str.Substring(0, StartIndex);
        }
        else
        {
            text=str;
        }
        //string text = str.Substring(0,StartIndex);
        //在图片之前是否存在文本
        if (string.IsNullOrEmpty(text))
        {
            string Imagestr = str.Substring(0, EndIndex + 1);
            if (StartIndex > -1)
            {
                StrList.Add(Imagestr);
                NewStr = str.Remove(0,Imagestr.Length);
                StrDeal(NewStr);
            }
        }
        else
        {
            StrList.Add(text);
            NewStr = str.Remove(0,text.Length);
            StrDeal(NewStr);
        }
    }

    /// 
    /// 字符串倒叙排序
    /// 
    void Sort()
    {
        for (int i = StrList.Count-1; i >=0; i--)
        {
            SortStr+=StrList[i];
        }
        StrList.Clear();
        //这就是倒序排列后的字符串
        Debug.LogError(SortStr);
    }
}


 好了,希望对你们有所帮助。 
  

你可能感兴趣的:(C#技术)