1. IRange接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace gbxTest
{
interface IRange
{
int endIndex
{
set;
get;
}
int startIndex
{
set;
get;
}
}
}
2. startBiggerThanEndException类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace gbxTest
{
class StartBiggerThanEndException : Exception
{
public StartBiggerThanEndException(string message)
: base(message)
{ }
}
}
3. TextEntry类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace gbxTest
{
class TextEntry : IRange
{
private int _start, _end;
private string text;
//对接口中属性的重写
public int endIndex
{
set
{
this._end = value;
}
get
{
return this._end;
}
}
public int startIndex
{
set
{
this._start = value;
}
get
{
return this._start;
}
}
public void setIndex(int start, int end)
{
this.startIndex = start;
this.endIndex = end;
}
//对字符串的赋值
public string Text
{
set
{
text = value;
}
get
{
return this.text;
}
}
//检查索引的正确性函数实现
public bool checkIndex(int start,int end)
{
if (start < 0 || start > text.Length || end < 0 || end > text.Length)
{
throw new IndexOutOfRangeException("起始/结束索引超出字符串索引范围");
}
if (start > end)
{
throw new StartBiggerThanEndException("起始索引大于结束索引");
}
return true;
}
//获得字串
public string selectSubString()
{
string subString = text.Substring(_start, _end);
return subString;
}
}
}
4. getSubString_Click()方法
private void getSubString_Click(object sender, RoutedEventArgs e)
{
TextEntry test = new TextEntry();
try
{
string tmpS = textString.Text.Trim();
test.Text = tmpS;
int tmpStart = int.Parse(startIndex.Text.Trim());
int tmpEnd = int.Parse(endIndex.Text.Trim());
bool flag = test.checkIndex(tmpStart, tmpEnd);
if (flag)
{
test.setIndex(tmpStart, tmpEnd);
subString.Text = test.selectSubString();
}
}
catch (IndexOutOfRangeException e1)
{
subString.Text = e1.Message;
}
catch (StartBiggerThanEndException e2)
{
subString.Text = e2.Message;
}
}
总代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace gbxTest
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void getSubString_Click(object sender, RoutedEventArgs e)
{
TextEntry test = new TextEntry();
try
{
string tmpS = textString.Text.Trim();
test.Text = tmpS;
int tmpStart = int.Parse(startIndex.Text.Trim());
int tmpEnd = int.Parse(endIndex.Text.Trim());
bool flag = test.checkIndex(tmpStart, tmpEnd);
if (flag)
{
test.setIndex(tmpStart, tmpEnd);
subString.Text = test.selectSubString();
}
}
catch (IndexOutOfRangeException e1)
{
subString.Text = e1.Message;
}
catch (StartBiggerThanEndException e2)
{
subString.Text = e2.Message;
}
}
}
}