How to split a string while ignoring the case of the delimiter?

前端 未结 8 475
梦谈多话
梦谈多话 2021-01-01 09:56

I need to split a string let\'s say \"asdf aA asdfget aa uoiu AA\" split using \"aa\" ignoring the case. to

\"asdf \"
\"asdfget \"
\"uoiu \"
相关标签:
8条回答
  • 2021-01-01 10:23

    There's no easy way to accomplish this using string.Split. (Well, except for specifying all the permutations of the split string for each char lower/upper case in an array - not very elegant I think you'll agree.)

    However, Regex.Split should do the job quite nicely.

    Example:

    var parts = Regex.Split(input, "aa", RegexOptions.IgnoreCase);
    
    0 讨论(0)
  • 2021-01-01 10:24
        public static List<string> _Split(this string input,string[] splt)
        {
            List<string> _Result=new List<string>();
            foreach(string _splt in splt)
            {
                if (splt.Count() == 1)
                { 
                    _Result.AddRange(Regex.Split(input, _splt, RegexOptions.IgnoreCase).ToList());
                }
                else 
                {
                    List<string> NewStr = Regex.Split(input, _splt, RegexOptions.IgnoreCase).ToList();
                    foreach(string _NewStr in NewStr)
                    {
                        List<string> NewSplt = splt.ToList();
                        NewSplt.Remove(_splt);
                        return _Split(_NewStr, NewSplt.ToArray());
                    }
                } 
            }
            return _Result;
        } 
    

    then use this function as bellow

    public frmThematicConversation()
    {
        InitializeComponent();
        string str = "a b c d e f g h a b c f a d c b f";
        string[] splt = { "a", "b" };
        List<string> _result = str._Split(splt);
    }
    
    0 讨论(0)
提交回复
热议问题