package com.lyj.string;
import java.util.ArrayList;
import java.util.List;

/**
 * 字符串测试类
 * @author LYJ
 *
 */
public final class MyString {
	
	
	/**
	 * 字符串转为大写
	 * @param source
	 * @return
	 */
	public  static final  String toUpCase(final String source){
		char []ch=source.toCharArray();
		int index=0;
		for(char c:ch){
			if(isAlphas(c)&&isSamll(c)){
				ch[index]=(char)(c-0x20);
			}
	        	index++;
			
		}
		return charToString(ch);
		
	}
	/**
	 * 字符串转化为小写
	 * @param source
	 * @return
	 */
	public static final String toLowCase( final String source){
		char []ch=source.toCharArray();
		int index=0;
		for(char c:ch){
			if(isAlphas(c)&&!isSamll(c)){
				ch[index]=(char) (c+0X20);
			
			}
		    index++;
			
		}
		return charToString(ch);
		
	}
	
	/**
	 * 分割字符串
	 * @param source
	 * @param split  分割串
	 * @return
	 */
	public final static String []split(String source,String split){
		List<String> string=new ArrayList<String>();
		int index=index(source.toCharArray(), split.toCharArray());
		if(index!=-1)
		  do{
			  string.add(source.substring(0, index));
			  source=source.substring(index+split.length()+1, source.length());
			  index=index(source.toCharArray(), split.toCharArray());
		  }
		  while(index(source.toCharArray(), split.toCharArray())!=-1);
		  string.add(source);
		
		
		return string.toArray(new String[string.size()]) ;
	}
	/***
	 * 分割字符串
	 * @param source
	 * @param split
	 * @return
	 */
	
	public final static String []split(String source,Character split){
		List<String> splitList=new ArrayList<String>();
		int start=-1;
		char[] sc=source.toCharArray();
		 for(int index=0,len=sc.length;index<len;index++){
			 if(sc[index]==split){
				 splitList.add(source.substring(start+1, index));
				 start=index;
			 }
		 }
		 splitList.add(source.substring(start+1,source.length()));
		 
		return splitList.toArray(new String[splitList.size()]);
	}
	

	/**
	 * 
	 * @param source
	 * @param old
	 * @param replace
	 * @return
	 */
	public final static String replace( final String source,Character old,String replace){
		int start=-1;
		final StringBuilder sbd=new StringBuilder(12);
		char[] sc=source.toCharArray();
		 for(int index=0,len=sc.length;index<len;index++){
			 if(sc[index]==old){
				 sbd.append(source.substring(start+1, index));
				 start=index;
				 sbd.append(replace);
			 }
		 }
		 sbd.append(source.substring(start+1,source.length()));
		
		
		return sbd.toString();
	}
	
	
	
	
	public final static String replaceAll(String source,String old,String replace){
		 final StringBuilder sd=new StringBuilder();
			int index=index(source.toCharArray(), old.toCharArray());
		if(index!=-1)
		  do{
			
			 sd.append(source.substring(0, index));
			 sd.append(replace);
			 source=source.substring(index+old.length(), source.length());
			 index=index(source.toCharArray(), old.toCharArray());
		  }
		  while(index!=-1);
		  sd.append(source);
		  
	    return sd.toString();
		  
	}
	
	/***
	 * 判断是否为字母
	 * @param c
	 * @return
	 */
	private static boolean isAlphas(char c){
		return (c>='a'&&c<='z')||(c>='A'&&c<='Z');
		
	}
	/**
	 * 判断是否为小写
	 * @param c
	 * @return
	 */
	private static boolean isSamll(char c){
		
		return (c>='a')&&(c<='z');
	}
	
	/**
	 * 判断字符串是否包含传入的字符串
	 * @param source 源字符串
	 * @param sequence 传入的字符串
	 * @return
	 */
	public   static final boolean contians(String source,String sequence){
		return containChary(source.toCharArray(), sequence.toCharArray());
	}
	
	
	public static final boolean contains(String source,Character ch){
		char [] sc=source.toCharArray();
		for(int start=0,len=sc.length,end=len-start-1;start<len;start++){
			if(sc[start]==ch||sc[end]==ch){
				return true;
			}
		}
		
		return false;
	}
	
    private final static String charToString(char ...ch){
	  final StringBuilder sbd=new StringBuilder();
		 for(char c:ch){
			 sbd.append(c);
		 }
		 return sbd.toString();
	 }
	
	 /**
	  * 判断一个char数组中是否包含另一个char数组的所有元素
	  * 并且是从数组的第一个元素对比至最后一个元素
	  * @param charAry
	  * @param newCharAyr
	  * @return
	  */
	 private final  static boolean containChary(char[]charAry,char[]newCharAyy){
		 int old_size=charAry.length;
		 int new_size=newCharAyy.length;
		 if(old_size<new_size){
			 return false;
		 }
		 int index=0,count=0,newIndex=0;
	    for(;index<old_size-2;index++){
		  while(newIndex<new_size-1&&charAry[index]==
			 newCharAyy[newIndex]&&charAry[index+1]==newCharAyy[newIndex+1] )
		  {
			  index++;
			  newIndex++;
			  count++;
			  if(count==new_size-1){
				  return true;
			  }
		  }
		  count=0;
		  newIndex=0;
		  
		  
		  
	  }
		 
		 return false;
		 
	 }
	 /**
	  * 找到要查找的字符串出现的位置
	  * @param source
	  * @param sequence
	  * @return 未找到返回不存在
	  */
	 public static int index(char[] source,char[] sequence){
		 int old_size=source.length;
		 int new_size=sequence.length;
		 int index=0,count=0,newIndex=0;
	    for(;index<old_size-2;index++){
	    	int position=index;
		  while(newIndex<new_size-1&&source[index]==
			  sequence[newIndex]&&source[index+1]==sequence[newIndex+1] )
		  {
			  index++;
			  newIndex++;
			  count++;
			  if(count==new_size-1){
				  return position;
			  }
		  }
		  count=0;
		  newIndex=0;
	  }
		 return -1;
		 
	 }
	
	 
	
		 
		 
	 
	
	public static void main(String[] args) {
		System.out.println(replaceAll("1--23-456-789-abcd-efghi-jklmno", "78", "||er"));
		System.out.println(contains("", 'c'));
		System.out.println("qewqe{}{}wq123214311111111111111112321fdsfsda{3}2{1}".replace("{}", "XXX"));
		System.out.println(replaceAll("qewqe{}{}wq123214311111111111111112321fdsfsda{3}2{1}", "{}", "XXX"));
		/* 
		char[]ch=new char[1234];
		for(String s:split("1234-12345-1234abc-4324-8932-3213-qdsad-eqwew-12321-432432-432432--!@#$#$", '-')){
			System.out.println(s+"  ");
		}
			
			
           System.out.println();
	

		//System.out.println(replaceAll("1234-1234-1234abc-4324", '-', "!"));
                     System.out.println(index("123321312".toCharArray(), "32".toCharArray()));
	*/}

	
	
	

}
最近下载更多
2812151886  LV1 2021年11月16日
chillyma  LV1 2021年5月31日
gsc5212  LV1 2021年5月25日
heiheixiaosi  LV1 2018年9月7日
爱java  LV1 2017年11月29日
myutil  LV1 2017年11月7日
shao139772  LV14 2017年6月22日
timor123  LV2 2016年10月29日
马骝爱代码  LV1 2016年10月28日
tonghui  LV1 2016年5月4日
最近浏览更多
hello286 2022年6月18日
暂无贡献等级
chillyma  LV1 2021年5月31日
gsc5212  LV1 2021年5月25日
清欢hello  LV3 2020年6月30日
Justice_Eternal  LV14 2020年5月30日
灵依ziNing  LV7 2020年5月30日
想什么名字的好麻烦  LV1 2020年4月3日
fly666  LV11 2018年9月27日
玫瑰感觉_  LV7 2018年9月17日
heiheixiaosi  LV1 2018年9月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友