`
ikeycn
  • 浏览: 146205 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

字符串中抽取某类型的字符串

J# 
阅读更多
旧代码,先贴上来,待整理
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class StringHandler {

	public static final int CH_STR = 1;
	public static final int ALPHA_STR = 2;
	public static final int NUM_STR = 3;

	/**
	 * 1.抽取中文字符串
	 * 
	 * @param str
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public String extraChinese(String str) throws UnsupportedEncodingException {

		String result;

		byte[] bytes = str.getBytes("gbk");
		byte[] bc = new byte[bytes.length];
		int j = 0;
		for (int i = 0; i < bytes.length;) {
			if (bytes[i] < 0) {
				bc[j++] = bytes[i++];
				bc[j++] = bytes[i];
			}
			i++;
		}

		byte[] br = new byte[j];
		for (int i = 0; i < j; i++) {
			br[i] = bc[i];
		}
		result = new String(br, "gbk");
		return result;
	}

	/**
	 * 抽取字母
	 * @param str
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public String extraAlpha(String str) throws UnsupportedEncodingException {

		String result;

		byte[] bytes = str.getBytes("gbk");
		byte[] bc = new byte[bytes.length];
		int j = 0;
		for (int i = 0; i < bytes.length;) {
			if ((bytes[i] >= 0x41 && bytes[i] <= 0x5a)
					|| (bytes[i] >= 0x61 && bytes[i] <= 0x7a)) {
				bc[j++] = bytes[i];
			}
			i++;
		}

		byte[] br = new byte[j];
		for (int i = 0; i < j; i++) {
			br[i] = bc[i];
		}
		result = new String(br, "gbk");
		return result;
	}

	/**
	 * 抽取数字
	 * @param str
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public String extraNum(String str) throws UnsupportedEncodingException {

		String result;

		byte[] bytes = str.getBytes("gbk");
		byte[] bc = new byte[bytes.length];
		int j = 0;
		for (int i = 0; i < bytes.length;) {
			if (bytes[i] >= 0x30 && bytes[i] <= 0x39) {
				bc[j++] = bytes[i];
			}
			i++;
		}

		byte[] br = new byte[j];
		for (int i = 0; i < j; i++) {
			br[i] = bc[i];
		}
		result = new String(br, "gbk");
		return result;
	}

	/**
	 * 2.根据类型抽取字符串
	 * @param str
	 * @param type
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public String extraStr(String str, int type)
			throws UnsupportedEncodingException {

		String result;
		if (this.CH_STR == type) {
			result = extraChinese(str);
		} else if (this.ALPHA_STR == type) {
			result = this.extraAlpha(str);
		} else if (this.NUM_STR == type) {
			result = this.extraNum(str);
		} else {
			result = "";
		}
		return result;
	}

	/**
	 * 3 根据多个类型抽取多个字符串组
	 * @param str
	 * @param types
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public Map<Integer, String> extraStr(String str, int... types)
			throws UnsupportedEncodingException {
		Map<Integer, String> map = new HashMap<Integer, String>();
		if (types.length > 3) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			for (int i = 0; i < types.length; i++) {

				map.put(types[i], extraStr(str, types[i]));
			}

		}
		return map;
	}

	/**
	 * @param args
	 * @throws UnsupportedEncodingException
	 */
	public static void main(String[] args) throws UnsupportedEncodingException {
		// TODO Auto-generated method stub

		StringHandler sh = new StringHandler();

		String test = new String("hello你world好2a!");
		
		//test1
		System.out.println(sh.extraChinese(test));

		//test2
		System.out.println(sh.extraStr(test, ALPHA_STR));

		//test3
		Map<Integer, String> result = sh.extraStr(test, ALPHA_STR, CH_STR, NUM_STR);
		Set<Integer> types = result.keySet();
		for(int type : types){
			if(type == StringHandler.ALPHA_STR){
				System.out.println("字母:" + result.get(type));
			}else if (type == StringHandler.CH_STR){
				System.out.println("中文:" + result.get(type)) ;
			}else{
				System.out.println("数字:" + result.get(type));
			}
			
		}
	}

}
分享到:
评论

相关推荐

    从源代码中抽取中文字符串的工具的源代码

    在完成中文字符串抽取后,通常会将其整理成资源文件(如.properties、.resx、.json等),这些文件可以被翻译人员方便地翻译成其他语言。翻译完成后,工具还需要有将新语言版本的字符串重新插入源代码的能力,这一步...

    截取用,分割的字符串中的第n个字符串 SQL

    根据给定的信息,本文将详细解释如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串。此需求通常应用于数据处理与分析场景中,尤其在处理半结构化或非结构化的文本数据时非常有用。 ### 核心知识点解析 ...

    oracle中操作字符串

    这个函数非常适用于从复杂的字符串中抽取所需的信息。 ##### 例1: 提取字符串中的第二个值 假设我们有一个字符串`',2:ɹ,'`,目标是从这个字符串中提取冒号`:`前面或后面的值。这里我们可以利用`REGEXP_SUBSTR`...

    常用字符串处理函数-求子字符串,字符串分割,编码转换.

    `substring`可以结合`indexOf`使用,以从复杂的字符串中抽取特定的部分,如从URL中提取域名: ```javascript var the_url = "http://www.webmonkey.com/javascript/index.html"; var lead_slashes = the_url.index...

    java从字符串中获取数字的两种方法

    java从一个包含中文字的字符串中抽取数字部分的两种方法,自己使用后,感觉挺符合需求了,分享出来。有需要的可以看看,看是否符合需求。

    ASP.NET字符串处理

    本文将详细介绍如何使用提供的`StringUtils`类进行常见的字符串操作,包括随机生成字符串、字符串替换(区分和不区分大小写)、删除字符串中的特定内容以及处理HTML标签。 首先,`StringUtils`类提供了一个常量`...

    字符串处理函数

    `substr()`方法允许你从一个字符串中抽取子串。它有两种形式:一种是从指定位置开始直到字符串末尾;另一种是从指定位置开始抽取固定长度的子串。 ```cpp std::string ss = "Hello World"; std::string ss2 = ss...

    AxureRP7.0字符串函数详解 String Functions.docx

    10. substr() 函数:在字符串中抽取从 start 下标开始的指定数目的字符 substr() 函数用于在字符串中抽取从 start 下标开始的指定数目的字符。语法为 LVAR1.substr(start,length)。 示例:LVAR1 = "axure7.0 标准...

    JavaScript中常见的字符串操作函数及用法

    有三种可以从字符串中抽取和切割的方法: * 使用 `splice()` 方法 * 使用 `slice()` 方法 * 使用 `substring()` 方法 例如: * `var myStr = "I,love,you,Do,you,love,me"; var subStr = myStr.substring(0, 5); ...

    提取字符串中url域名

    ### 提取字符串中URL域名的方法解析 在互联网应用开发中,经常需要从一段文本或数据中提取出URL中的域名部分。这种需求常见于链接管理、网络安全检查、网站数据分析等多个领域。本文将详细介绍如何通过正则表达式的...

    sql字符串处理函数

    PATINDEX()函数也用于查找一个模式在字符串中的位置,但它支持更复杂的模式匹配,包括通配符。 ```sql SELECT PATINDEX('%World%', 'Hello World'); -- 返回7 ``` PATINDEX()函数通常用于更复杂的字符串搜索和替换...

    字符串工具箱

    在信息技术领域,字符串处理是日常工作中不可或缺的一部分,无论是数据解析、文本分析还是代码编写。"字符串工具箱"作为一个专门针对字符串操作的工具,它提供了多种功能,如文本分析、标签提取、括号匹配等,极大地...

    RTF文件内容的字符串读取

    从实战项目中抽取的一段代码,用于RTF文件内容的字符串读取.

    获取字符串中所有图片的路径

    我们需要从这样的字符串中抽取`src`属性的值,即图片的URL。正则表达式可以很好地完成这项任务。 #### 正则表达式详解 在提供的代码片段中,使用的正则表达式为: ```regex \\[\\s\\S]*?src=['\"]?(?[^'\"\\&gt;\\]+)...

    ios字符串处理

    `replaceCharactersInRange:withString:`方法可以替换字符串中的某一部分,例如`[str replaceCharactersInRange:range withString:@"replacement"];`。 21. **检查前缀和后缀**: `hasPrefix:`和`hasSuffix:`方法...

    PHP字符串中抽取子串操作实例分析

    本文实例讲述了PHP字符串中抽取子串操作。分享给大家供大家参考,具体如下: 问题 希望从字符串的某个特定位置开始抽取这个字符串的一部分。例如,对于输入到一个表单的用户名,想要得到这个用户名的前8个字符。 ...

    JavaScript substr() 字符串截取函数使用详解

    substr 定义和用法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法 stringObject.substr(start,length) 参数 描述 start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么...

    字符串时间转换时间格式问题带配图完整解决方案--kettle版.doc

    ### 字符串时间转换时间格式问题带配图完整解决方案—Kettle版 #### ETL概念与Kettle简介 ETL(Extract-Transform-Load)即数据抽取、转换、装载的过程,是金融IT领域中处理大数据量的核心技术之一。随着业务的...

Global site tag (gtag.js) - Google Analytics