`

java常用操作方法(三)字符串工具类 StringUtil

    博客分类:
  • java
阅读更多
package com.jinqiao.util;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;


@Entity
public class StringUtil {

/**
* 去掉给定字符串前和后的空格,返回干净的字符串
* @param str
* @return String
*/
public static String removeSpaces(String args) {

if(args!=null){
args = args.trim();
while (args.startsWith(" ")) {
args = args.substring(1, args.length()).trim();
}
while (args.endsWith(" ")) {
args = args.substring(0, args.length() - 1).trim();
}
}else{
args = "";
}

return args;
}


/**
* 转全角的函数
* @param str
* @return String
*/
public static String toSBC(String input) {
//半角转全角:
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 32) {
c[i] = (char) 12288;
continue;
}
if (c[i] < 127) {
c[i] = (char) (c[i] + 65248);
}
}
return new String(c);
}


/**
* 转半角的函数
* @param str
* @return String
*/
public static String toDBC(String input) {
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {
c[i] = (char) 32;
continue;
        }
if (c[i] > 65280 && c[i] < 65375){
c[i] = (char) (c[i] - 65248);
}
}
return new String(c);
}


/**
* 为每添加一个元素前面增加指定的分隔 除第一个元素之外
* @param str
* @param appStr
* @param compart
* @return
*/
public static StringBuffer appendElement(StringBuffer strB,String appStr,String compart){

//当出入参数为NULL时
if(strB == null){
return new StringBuffer(appStr);
}

//当没有元素时直接添加追加元素 否则先添加分隔符
if(strB.length() == 0){
strB.append(appStr);
}else{
strB.append(compart);
strB.append(appStr);
}

return strB;
}


/**
* 移除元素
* @param str
* @param moveStr
* @param compart
* @return
*/
public static StringBuffer moveElement(StringBuffer strB,String moveStr,String compart){

//当出入参数为NULL时
if(strB == null){
return strB;
}

StringBuffer newStrB = new StringBuffer();

String[] strArray = strB.toString().split(compart);
for(int i=0;i<strArray.length;i++){

if(moveStr.equals(strArray[i])){
continue;
}

if(i == 0){
newStrB.append(strArray[i]);
}else{
newStrB.append(compart);
newStrB.append(strArray[i]);
}
}



return newStrB;
}


/**
* 移除第一个匹配的元素
* @param str
* @param moveStr
* @param compart
* @return
*/
public static StringBuffer moveFirstElement(StringBuffer strB,String moveStr,String compart){

//当出入参数为NULL时
if(strB == null){
return strB;
}

StringBuffer newStrB = new StringBuffer();

String[] strArray = strB.toString().split(compart);
boolean tag = false;
for(int i=0;i<strArray.length;i++){

if(moveStr.equals(strArray[i]) == true && tag == false){
tag = true;
continue;
}

if(i == 0){
newStrB.append(strArray[i]);
}else{
newStrB.append(compart);
newStrB.append(strArray[i]);
}
}



return newStrB;
}


/**
* 从给定字符中 返回所含的中文字符 并按每组以以字符串数组的形式返回
* @param src
* @return
*/
public static String[] getChinese(String src){

List list = new ArrayList();

byte[] srcByte = src.getBytes();
int srcLength = srcByte.length;


int begin = -1;
int end = -1;

for(int i=0;i<srcLength;i++){

//设置中文的开始位
if(srcByte[i] < 0 && begin == -1){
begin = i;
}

//设置中文的结束位
if(srcByte[i] > 0 && begin != -1 && end == -1){
end = i;
}


//如果已经找到中文的开始 但直到最后也没找到中文的结束,则将字符的结束位当成中文的截止位
if(begin != -1 && i == srcLength - 1){
end = i;
}


//将中文提取出来
if(begin != -1 && end != -1){


int tempLength = end-begin+1;
if(tempLength % 2 != 0){
tempLength = tempLength - 1;
}


byte[] tempByte = new byte[tempLength];
System.arraycopy(srcByte,  begin,  tempByte,  0,  tempLength); 

list.add(new String(tempByte));

begin = -1;
end = -1;
}

}


//将中文以数组输出
int size = list.size();
String[] chineseArray = new String[size];
for(int i=0;i<size;i++){
chineseArray[i] = list.get(i).toString();
}

return chineseArray;
}


public static String zeroleft(String str,Integer len){
if(str==null||str.trim().length()<1)
str = "1";
while(str.length()<len){
str ="0" + str;
}
return str;
}

public static void main(String[] args) {

StringBuffer str = new StringBuffer("a,c,d,c");
str = StringUtil.moveFirstElement(str, "c", ",");
System.out.println(str.toString());
}

}
分享到:
评论

相关推荐

    java常用工具类的使用

    在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...

    Java基础知识点总结.docx

    &lt; java.lang &gt;String字符串:★★★☆ 71 &lt; java.lang &gt;StringBuffer字符串缓冲区:★★★☆ 73 &lt; java.lang &gt;StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,...

    正则表达式大全案例分析案例介绍

    Java中的正则表达式是一种强大的文本匹配工具,它可以用来检查和操作字符串。在Java中,正则表达式的相关类都位于java.util.regex包中。 下面是一些Java中常用的正则表达式语法和使用方法: 匹配字符串模式: 使用...

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA基础课程讲义

    字符串(java.lang.String类)的使用 90 字符串相等的判断 92 思考作业 93 上机作业 94 第四章 异常机制 95 导引问题 95 异常(Exception)的概念 96 异常分类 96 Error 97 Error和Exception的区别 97 Exception 97 ...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包4

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包3

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包2

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    java范例开发大全源代码

     6.1 字符串类String 108  实例79 创建字符串类 108  实例80 如何使用charAt()方法计算重复字符 109  实例81 按字母顺序比较大小 110  实例82 首尾相连 111  实例83 字符串间的比较 112  实例84 ...

    Java范例开发大全 (源程序)

     6.1 字符串类String 108  实例79 创建字符串类 108  实例80 如何使用charAt()方法计算重复字符 109  实例81 按字母顺序比较大小 110  实例82 首尾相连 111  实例83 字符串间的比较 112  实例84 字符集...

    java范例开发大全

    6.1 字符串类String 108 实例79 创建字符串类 108 实例80 如何使用charAt()方法计算重复字符 109 实例81 按字母顺序比较大小 110 实例82 首尾相连 111 实例83 字符串间的比较 112 实例84 字符集的解码方法 113 实例...

    java编程基础,应用与实例

    15.4 java.util.StringTokenizer类 238 15.5 java.util.Calendar类 240 15.6 巩固练习 242 第16章 AWT程序设计 244 16.1 java.awt.Component类 244 16.2 java.awt.Container类 247 16.3 布局管理器 ...

    Guava 16.0 API (CHM格式)

    Strings: 一个非常非常有用的字符串工具类: 提供 splitting,joining, padding 等操作。  七. Primitives: 扩展 JDK 中未提供的对原生类型(如int、char等)的操作, 包括某些类型的无符号的变量。  八. ...

    java范例开发大全(pdf&源码)

    6.1 字符串类String 108 实例79 创建字符串类 108 实例80 如何使用charAt()方法计算重复字符 109 实例81 按字母顺序比较大小 110 实例82 首尾相连 111 实例83 字符串间的比较 112 实例84 字符集的解码方法 113 实例...

    Java范例开发大全(全书源程序)

    6.1 字符串类String 108 实例79 创建字符串类 108 实例80 如何使用charAt()方法计算重复字符 109 实例81 按字母顺序比较大小 110 实例82 首尾相连 111 实例83 字符串间的比较 112 实例84 字符集的解码方法 ...

Global site tag (gtag.js) - Google Analytics