旧代码,先贴上来,待整理
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等),这些文件可以被翻译人员方便地翻译成其他语言。翻译完成后,工具还需要有将新语言版本的字符串重新插入源代码的能力,这一步...
根据给定的信息,本文将详细解释如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串。此需求通常应用于数据处理与分析场景中,尤其在处理半结构化或非结构化的文本数据时非常有用。 ### 核心知识点解析 ...
这个函数非常适用于从复杂的字符串中抽取所需的信息。 ##### 例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从一个包含中文字的字符串中抽取数字部分的两种方法,自己使用后,感觉挺符合需求了,分享出来。有需要的可以看看,看是否符合需求。
`Mid()`函数用于从字符串中提取子串,`InStr()`函数则用于查找指定字符或子串在字符串中首次出现的位置。为了从一串字符中提取数字,我们可以结合使用这两个函数,配合正则表达式或者自定义循环逻辑。 1. **正则...
本文将详细介绍如何使用提供的`StringUtils`类进行常见的字符串操作,包括随机生成字符串、字符串替换(区分和不区分大小写)、删除字符串中的特定内容以及处理HTML标签。 首先,`StringUtils`类提供了一个常量`...
`substr()`方法允许你从一个字符串中抽取子串。它有两种形式:一种是从指定位置开始直到字符串末尾;另一种是从指定位置开始抽取固定长度的子串。 ```cpp std::string ss = "Hello World"; std::string ss2 = ss...
10. substr() 函数:在字符串中抽取从 start 下标开始的指定数目的字符 substr() 函数用于在字符串中抽取从 start 下标开始的指定数目的字符。语法为 LVAR1.substr(start,length)。 示例:LVAR1 = "axure7.0 标准...
有三种可以从字符串中抽取和切割的方法: * 使用 `splice()` 方法 * 使用 `slice()` 方法 * 使用 `substring()` 方法 例如: * `var myStr = "I,love,you,Do,you,love,me"; var subStr = myStr.substring(0, 5); ...
### 提取字符串中URL域名的方法解析 在互联网应用开发中,经常需要从一段文本或数据中提取出URL中的域名部分。这种需求常见于链接管理、网络安全检查、网站数据分析等多个领域。本文将详细介绍如何通过正则表达式的...
PATINDEX()函数也用于查找一个模式在字符串中的位置,但它支持更复杂的模式匹配,包括通配符。 ```sql SELECT PATINDEX('%World%', 'Hello World'); -- 返回7 ``` PATINDEX()函数通常用于更复杂的字符串搜索和替换...
在信息技术领域,字符串处理是日常工作中不可或缺的一部分,无论是数据解析、文本分析还是代码编写。"字符串工具箱"作为一个专门针对字符串操作的工具,它提供了多种功能,如文本分析、标签提取、括号匹配等,极大地...
从实战项目中抽取的一段代码,用于RTF文件内容的字符串读取.
我们需要从这样的字符串中抽取`src`属性的值,即图片的URL。正则表达式可以很好地完成这项任务。 #### 正则表达式详解 在提供的代码片段中,使用的正则表达式为: ```regex \\[\\s\\S]*?src=['\"]?(?[^'\"\\>\\]+)...
`replaceCharactersInRange:withString:`方法可以替换字符串中的某一部分,例如`[str replaceCharactersInRange:range withString:@"replacement"];`。 21. **检查前缀和后缀**: `hasPrefix:`和`hasSuffix:`方法...
本文实例讲述了PHP字符串中抽取子串操作。分享给大家供大家参考,具体如下: 问题 希望从字符串的某个特定位置开始抽取这个字符串的一部分。例如,对于输入到一个表单的用户名,想要得到这个用户名的前8个字符。 ...
substr 定义和用法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法 stringObject.substr(start,length) 参数 描述 start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么...
### 字符串时间转换时间格式问题带配图完整解决方案—Kettle版 #### ETL概念与Kettle简介 ETL(Extract-Transform-Load)即数据抽取、转换、装载的过程,是金融IT领域中处理大数据量的核心技术之一。随着业务的...