这次介绍如何实现自定义字符串。字符串简称串,串其实是一种特殊的线性表,因为串中的元素是一个个字符(char)。串(string)是由n个字符组成的有限序列,串中任意连续的字符组成的子序列称为改串的字串,包含字串的串被称为主串,子串的第一个字符在主串中的位置叫子串的位置,
在c#中串具有恒久不变的特性,字符串一经创建,就不能改变。所有关于串的修改操作,返回的都是一个新的串,原来的串都不会被改变。
自定义字符串类(StringDS)
class StringDS
{
private char[] data;//字符串是由char数组构成的
/// <summary>
/// 字符数组构造方法
/// </summary>
/// <param name="data"></param>
public StringDS(char[] data)
{
this.data = new char[data.Length];
this.data = data;
}
/// <summary>
/// 字符串构造方法
/// </summary>
/// <param name="str"></param>
public StringDS(string str)
{
this.data = new char[str.Length];
for (int i = 0; i < str.Length; i++)
{
data[i] = str[i];
}
}
public string ToString()
{
return new string(data);
}
/// <summary>
/// 返回索引对应的字符
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public char this[int index]
{
get { return data[index]; }
}
/// <summary>
/// 返回字符串长度
/// </summary>
/// <returns></returns>
public int GetLength()
{
return data.Length;
}
//这个compare比较方法,
//第一优先级,从0开始逐个比较ASCALL码,
//第二优先级,比较字符串长度
/// <summary>
/// 如果两个字符串一样 返回0
/// 当前字符串小于s,返回-1 (这里的大于和小于说的是ASCALL码的比较)
/// 当前字符串大于s,返回1
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public int Compare(StringDS s)
{
int l