初始化上传
This commit is contained in:
115
常用工具集/Utility/SqlFormat/StringTokenizer.cs
Normal file
115
常用工具集/Utility/SqlFormat/StringTokenizer.cs
Normal file
@@ -0,0 +1,115 @@
|
||||
namespace NHibernate.Util
|
||||
{
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class StringTokenizer : IEnumerable<string>, IEnumerable
|
||||
{
|
||||
private const string _defaultDelim = " \t\n\r\f";
|
||||
private string _delim;
|
||||
private string _origin;
|
||||
private bool _returnDelim;
|
||||
|
||||
public StringTokenizer(string str)
|
||||
{
|
||||
this._origin = str;
|
||||
this._delim = " \t\n\r\f";
|
||||
this._returnDelim = false;
|
||||
}
|
||||
|
||||
public StringTokenizer(string str, string delim)
|
||||
{
|
||||
this._origin = str;
|
||||
this._delim = delim;
|
||||
this._returnDelim = true;
|
||||
}
|
||||
|
||||
public StringTokenizer(string str, string delim, bool returnDelims)
|
||||
{
|
||||
this._origin = str;
|
||||
this._delim = delim;
|
||||
this._returnDelim = returnDelims;
|
||||
}
|
||||
|
||||
public IEnumerator<string> GetEnumerator()
|
||||
{
|
||||
return new StringTokenizerEnumerator(this);
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return new StringTokenizerEnumerator(this);
|
||||
}
|
||||
|
||||
private class StringTokenizerEnumerator : IEnumerator<string>, IDisposable, IEnumerator
|
||||
{
|
||||
private int _cursor;
|
||||
private string _next;
|
||||
private StringTokenizer _stokenizer;
|
||||
|
||||
public StringTokenizerEnumerator(StringTokenizer stok)
|
||||
{
|
||||
this._stokenizer = stok;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
private string GetNext()
|
||||
{
|
||||
if (this._cursor >= this._stokenizer._origin.Length)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
char ch = this._stokenizer._origin[this._cursor];
|
||||
if (this._stokenizer._delim.IndexOf(ch) != -1)
|
||||
{
|
||||
this._cursor++;
|
||||
if (this._stokenizer._returnDelim)
|
||||
{
|
||||
return ch.ToString();
|
||||
}
|
||||
return this.GetNext();
|
||||
}
|
||||
int length = this._stokenizer._origin.IndexOfAny(this._stokenizer._delim.ToCharArray(), this._cursor);
|
||||
if (length == -1)
|
||||
{
|
||||
length = this._stokenizer._origin.Length;
|
||||
}
|
||||
string str = this._stokenizer._origin.Substring(this._cursor, length - this._cursor);
|
||||
this._cursor = length;
|
||||
return str;
|
||||
}
|
||||
|
||||
public bool MoveNext()
|
||||
{
|
||||
this._next = this.GetNext();
|
||||
return (this._next != null);
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
this._cursor = 0;
|
||||
}
|
||||
|
||||
public string Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._next;
|
||||
}
|
||||
}
|
||||
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.Current;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user