コード例 #1
0
ファイル: string.cs プロジェクト: iLanceS/fastCSharp
        /// <summary>
        /// 分割字符串
        /// </summary>
        /// <param name="value">原字符串</param>
        /// <param name="startIndex">起始位置</param>
        /// <param name="length">分割字符串长度</param>
        /// <param name="split">分割符</param>
        /// <returns>字符子串集合</returns>
        public unsafe static subArray <subString> split(this string value, int startIndex, int length, char split)
        {
            array.range range = new array.range(value.length(), startIndex, length);
            if (range.GetCount != length)
            {
                fastCSharp.log.Error.Throw(log.exceptionType.IndexOutOfRange);
            }
            subArray <subString> values = default(subArray <subString>);

            if (value != null)
            {
                fixed(char *valueFixed = value)
                {
                    char *last = valueFixed + range.SkipCount, end = last + range.GetCount;

                    for (char *start = last; start != end;)
                    {
                        if (*start == split)
                        {
                            values.Add(subString.Unsafe(value, (int)(last - valueFixed), (int)(start - last)));
                            last = ++start;
                        }
                        else
                        {
                            ++start;
                        }
                    }
                    values.Add(subString.Unsafe(value, (int)(last - valueFixed), (int)(end - last)));
                }
            }
            return(values);
        }
コード例 #2
0
ファイル: subArray.cs プロジェクト: iLanceS/fastCSharp
 /// <summary>
 /// 连接数组
 /// </summary>
 /// <typeparam name="arrayType">目标数组类型</typeparam>
 /// <param name="getValue">数据获取器</param>
 /// <returns>目标数组</returns>
 public subArray <arrayType> Concat <arrayType>(Func <valueType, subArray <arrayType> > getValue)
 {
     if (getValue == null)
     {
         log.Error.Throw(log.exceptionType.Null);
     }
     if (length != 0)
     {
         subArray <arrayType> values = new subArray <arrayType>();
         if (startIndex == 0)
         {
             int index = length;
             foreach (valueType value in array)
             {
                 values.Add(getValue(value));
                 if (--index == 0)
                 {
                     break;
                 }
             }
         }
         else
         {
             int index = startIndex, endIndex = startIndex + length;
             do
             {
                 values.Add(getValue(array[index]));
             }while (++index != endIndex);
         }
         return(values);
     }
     return(default(subArray <arrayType>));
 }
コード例 #3
0
ファイル: string.cs プロジェクト: iLanceS/fastCSharp
        /// <summary>
        /// 分割字符串并返回数值集合(不检查数字合法性)
        /// </summary>
        /// <param name="ints">原字符串</param>
        /// <param name="split">分割符</param>
        /// <returns>数值集合</returns>
        public unsafe static subArray <int> splitIntNoCheck(this string ints, char split)
        {
            subArray <int> values = new subArray <int>();

            if (ints != null && ints.Length != 0)
            {
                fixed(char *intPoint = ints)
                {
                    int intValue = 0;

                    for (char *next = intPoint, end = intPoint + ints.Length; next != end; ++next)
                    {
                        if (*next == split)
                        {
                            values.Add(intValue);
                            intValue = 0;
                        }
                        else
                        {
                            intValue *= 10;
                            intValue += *next;
                            intValue -= '0';
                        }
                    }
                    values.Add(intValue);
                }
            }
            return(values);
        }
コード例 #4
0
 /// <summary>
 /// 查找符合条件的记录集合
 /// </summary>
 /// <typeparam name="valueType">值类型</typeparam>
 /// <param name="values">值集合</param>
 /// <param name="isValue">判断记录是否符合条件的委托</param>
 /// <returns>符合条件的记录集合</returns>
 public static subArray <valueType> getFind <valueType>
     (this IEnumerable <valueType> values, Func <valueType, bool> isValue)
 {
     if (values != null)
     {
         if (isValue == null)
         {
             log.Error.Throw(log.exceptionType.Null);
         }
         subArray <valueType> value = new subArray <valueType>();
         foreach (valueType nextValue in values)
         {
             if (isValue(nextValue))
             {
                 value.Add(nextValue);
             }
         }
         return(value);
     }
     return(default(subArray <valueType>));
 }