⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringtokenizer.java

📁 游戏说明
💻 JAVA
字号:
package com.tianxia.qipai.model.util;

import java.util.Enumeration;
import java.util.NoSuchElementException;

public class StringTokenizer implements Enumeration
{                               //字符串分割工具
	private int currentPosition;
	private int newPosition;
	private int maxPosition;
	private String str;
	private String delimiters;
	private boolean retDelims;
	private boolean delimsChanged;
	private char maxDelimChar;
private void setMaxDelimChar()
{
	if(delimiters == null)
	{
		maxDelimChar = '\0';
		return;
	}
	char c = '\0';
	for(int i = 0; i < delimiters.length(); i++)
	{
		char c1 = delimiters.charAt(i);
		if(c < c1)
		c = c1;
	}

	maxDelimChar = c;
}

//为指定字符串构造一个 string tokenizer 对象。 在 delim 参数中的字符是分隔标记的分隔符
//如果 returnTokens 标志为 true, 则分隔符字符也被作为标记返回。每个分隔符作为长度为一的字符串返回。
//如果标志为 false, 则跳过分隔符字符,且把它作为标记之间的分隔符。
public StringTokenizer(String s, String s1, boolean flag)
{
	currentPosition = 0;
	newPosition = -1;
	delimsChanged = false;
	str = s;
	maxPosition = s.length();
	delimiters = s1;
	retDelims = flag;
	setMaxDelimChar();
}

//为指定字符串构造一个 string tokenizer 对象。 在 delim 参数中的字符是分隔标记的分隔符。 
public StringTokenizer(String s, String s1)
{
	this(s, s1, false);
}

//为指定字符串构造一个 string tokenizer 对象。 tokenizer 使用缺省的分隔符设置,
//它是 "\t\n\r":空格、制表符、换行符和回车。 
public StringTokenizer(String s)
{
	this(s, " \t\n\r\f", false);
}

//重新设置要分割的字符串
public void ResetString(String s){
	currentPosition = 0;
	newPosition = -1;
	delimsChanged = false;
	str = s;
	maxPosition = s.length();
}


//
private int skipDelimiters(int i)
{
	if(delimiters == null)
	throw new NullPointerException();
	int j;
	for(j = i; !retDelims && j < maxPosition; j++)
	{
		char c = str.charAt(j);
		if(c > maxDelimChar || delimiters.indexOf(c) < 0)
		break;
	}
	
	return j;
}

//返回该 string tokenizer 的下一个标记的位置
private int scanToken(int i)
{
	int j;
	for(j = i; j < maxPosition; j++)
	{
		char c = str.charAt(j);
		if(c <= maxDelimChar && delimiters.indexOf(c) >= 0)
		break;
	}
	
	if(retDelims && i == j)
	{
		char c1 = str.charAt(j);
		if(c1 <= maxDelimChar && delimiters.indexOf(c1) >= 0)
		j++;
	}
	return j;
}
//测试该 tokenizer 的字符串是否还有其它可用的标记。
public boolean hasMoreTokens()
{
	newPosition = skipDelimiters(currentPosition);
	return newPosition < maxPosition;
}

//返回该 string tokenizer 的下一个标记。 
public String nextToken()
{
	currentPosition = newPosition < 0 || delimsChanged ? skipDelimiters(currentPosition) : newPosition;
	delimsChanged = false;
	newPosition = -1;
	if(currentPosition >= maxPosition)
	{
		throw new NoSuchElementException();
	} else
	{
		int i = currentPosition;
		currentPosition = scanToken(currentPosition);
		return str.substring(i, currentPosition);
	}
}

//返回该 string tokenizer 的字符串的下一个标记。 在此调用之后,新的分隔符设置保持缺省。
public String nextToken(String s)
{
	delimiters = s;
	delimsChanged = true;
	setMaxDelimChar();
	return nextToken();
}

//该方法与 hasMoreTokens 方法返回同样的值。 它退出以便该类可以实现 Enumeration 接口。 
public boolean hasMoreElements()
{
	return hasMoreTokens();
}

//该方法与 nextToken 方法返回同样的值,除了它声明的返回值是 Object 而不是 String。
// 它存在以便该类可以实现 Enumeration 接口。
public Object nextElement()
{
	return nextToken();
}


//判断从当前位置开始,还有几个标记
public int countTokens()
{
	int i = 0;
	for(int j = currentPosition; j < maxPosition;)
	{
		j = skipDelimiters(j);
		if(j >= maxPosition)
		break;
		j = scanToken(j);
		i++;
	}

	return i;
}

public void setNull(){
	 str = null;
	 delimiters = null;
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -