using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
namespace HTEXLib.COMM.Helpers
{
public class StringHelper
{
#region 截取字符串
public static string GetSubString(string pSrcString, int pLength, string pTailString)
{
return GetSubString(pSrcString, 0, pLength, pTailString);
}
public static string GetSubString(string pSrcString, int pStartIndex, int pLength, string pTailString)
{
string str = pSrcString;
byte[] bytes = Encoding.UTF8.GetBytes(pSrcString);
foreach (char ch in Encoding.UTF8.GetChars(bytes))
{
if (((ch > 'ࠀ') && (ch < '一')) || ((ch > 0xac00) && (ch < 0xd7a3)))
{
if (pStartIndex >= pSrcString.Length)
{
return "";
}
return pSrcString.Substring(pStartIndex, ((pLength + pStartIndex) > pSrcString.Length) ? (pSrcString.Length - pStartIndex) : pLength);
}
}
if (pLength < 0)
{
return str;
}
byte[] sourceArray = Encoding.Default.GetBytes(pSrcString);
if (sourceArray.Length <= pStartIndex)
{
return str;
}
int length = sourceArray.Length;
if (sourceArray.Length > (pStartIndex + pLength))
{
length = pLength + pStartIndex;
}
else
{
pLength = sourceArray.Length - pStartIndex;
pTailString = "";
}
int num2 = pLength;
int[] numArray = new int[pLength];
byte[] destinationArray = null;
int num3 = 0;
for (int i = pStartIndex; i < length; i++)
{
if (sourceArray[i] > 0x7f)
{
num3++;
if (num3 == 3)
{
num3 = 1;
}
}
else
{
num3 = 0;
}
numArray[i] = num3;
}
if ((sourceArray[length - 1] > 0x7f) && (numArray[pLength - 1] == 1))
{
num2 = pLength + 1;
}
destinationArray = new byte[num2];
Array.Copy(sourceArray, pStartIndex, destinationArray, 0, num2);
return (Encoding.Default.GetString(destinationArray) + pTailString);
}
#endregion
///
/// 将字符串转换为int类型数组
///
/// 如1,2,3,4,5
///
public static List StrToListString(string str)
{
var list = new List();
if (!str.Contains(","))
{
list.Add(str);
return list;
}
var slist = str.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in slist)
{
list.Add(item);
}
return list;
}
///
/// 截取两个字符串中间的字符串
///
///
///
///
///
public static string SubMidString(string sourse, string startstr, string endstr)
{
string result = string.Empty;
int startindex, endindex;
startindex = sourse.IndexOf(startstr);
if (startindex == -1)
return result;
string tmpstr = sourse.Substring(startindex + startstr.Length);
endindex = tmpstr.IndexOf(endstr);
if (endindex == -1)
return result;
result = tmpstr.Remove(endindex);
return result;
}
public static double[] ListTodouble(List list)
{
Double[] doubles = new Double[list.Count];
int k = 0;
foreach (double p in list)
{
doubles[k] = p;
k++;
}
//doubles = list;
if (doubles == null)
{
return null;
}
double[] result = new double[doubles.Length];
for (int i = 0; i < doubles.Length; i++)
{
result[i] = doubles[i];
}
return result;
}
public static double[,] ListToDouble(List> list)
{
int itemCount = 0;
//int stuCount = list.Count;
foreach (List p in list)
{
if (p.Count != 0)
{
itemCount = p.Count;
break;
}
}
for (int k = 0; k < list.Count; k++)
{
if (list[k].Count == 0)
{
list.Remove(list[k]);
}
}
double[,] doubles = new double[list.Count, itemCount];
for (int i = 0; i < list.Count; i++)
{
for (int j = 0; j < itemCount; j++)
{
doubles[i, j] = list[i][j];
}
}
return doubles;
}
public static int getKeyCount(JsonElement element)
{
int keys = 0;
var emobj = element.EnumerateObject();
while (emobj.MoveNext())
{
keys++;
}
return keys;
}
public static string getEduName(string key)
{
string name = "";
switch (key)
{
case "0":
name = "知识";
break;
case "1":
name = "理解";
break;
case "2":
name = "应用";
break;
case "3":
name = "分析";
break;
case "4":
name = "综合";
break;
case "5":
name = "评鉴";
break;
}
return name;
}
public static string getTypeName(string key)
{
string name = "";
switch (key)
{
case "0":
name = "Single";
break;
case "1":
name = "Multiple";
break;
case "2":
name = "Judge";
break;
case "3":
name = "Complete";
break;
}
return name;
}
}
}