`

String类型的一些操作

    博客分类:
  • Java
阅读更多

下面是关于字符串的一些操作,这些都是在一本C++的书上看到的,然后就用java实现了一下。

 

public class StringOperation 
{
	public static void main(String[] args)
	{
		String srcstr = "abcdefg";
		String substr = "cdef";
		
		String str = "I am from shandong";
		String token = "from";
		String isrevstr = "abcdcba";
		
		String str1 = "abcdefg aeiou";
		String str2 = "acdefgae";
		String str3 = "abccdefcfgcsd";
		String str4 = "123456789";
		String str5 = "bei北京欢迎你jing我爱你中国China";
		
		System.out.println(Search(srcstr, substr));
		System.out.println(Reverse(str));
		System.out.println(Reverse2(str));
		System.out.println(Reverse(str, token));
		System.out.println(isRevStr(isrevstr));
		System.out.println(Compare(srcstr, substr));
		System.out.println(getCommonStr(str1, str2));
		System.out.println(DeleteStr(str3, 3, 3));
		System.out.println(DeleteStr(str3, 'c'));
		System.out.println(RightMove(str4, 6));
		System.out.println(LeftMove(str4, 6));
		System.out.println(getChineseNum(str5));
	}
	
	public static int Search(String srcstr, String substr)
	{
		int index = -1;
		
		index = srcstr.indexOf(substr);
		
		return index;
	}
	
	public static String Reverse(String str)
	{
		String[] temp = str.split(" ");
		
		StringBuffer sb = new StringBuffer();
		
		for(int i=temp.length-1; i>=0; i--)
			sb.append(temp[i] + " ");
		
		return sb.toString();
	}
	
	public static String Reverse2(String str)
	{
		StringBuffer sb = new StringBuffer();
		
		sb.append(str);
		
		return sb.reverse().toString();
	}
	
	public static String Reverse(String str, String token)
	{
		StringBuffer sb = new StringBuffer();
		StringBuffer temp = new StringBuffer();
		
		sb.append(str.replaceFirst(token, temp.append(token).reverse().toString()));
		
		return sb.reverse().toString();
	}
	
	public static boolean isRevStr(String str)
	{
		boolean flag = true;
		
		for(int i=0; i<str.length()/2; i++)
		{
			if(str.charAt(i) != str.charAt(str.length()-1-i))
			{
				flag = false;
				break;
			}
		}
		
		return flag;
	}
	
	public static int Compare(String str1, String str2)
	{
		int index = 0;
		int len = 0;
		
		if(str1.length() <= str2.length())
		{
			len = str1.length();
		}
		else
		{
			len = str2.length();
		}
		
		int i=0;
		for(i=0; i<len; i++)
		{
			if(str1.charAt(i) == str2.charAt(i))
			{
				index = 0;
			}
			else if(str1.charAt(i) < str2.charAt(i))
			{
				index = -1;
				break;
			}
			else
			{
				index = 1;
				break;
			}
		}
		
		if(i == len)
		{
			if(str1.length() < str2.length())
				index = -1;
			else if(i < str1.length())
				index = 1;
		}
		
		return index;
	}

	public static String getCommonStr(String str1, String str2)
	{
		String temp = "";
		String longstr = "";
		String shortstr = "";
		String commonstr = "";
		boolean flag = false;
		
		if(str1.length() >= str2.length())
		{
			longstr = str1;
			shortstr = str2;
		}
		else
		{
			longstr = str2;
			shortstr = str1;
		}
		
		for(int i=shortstr.length()-1; i>0; i--)
		{
			for(int j=0; j<shortstr.length()-i; j++)
			{
				temp = shortstr.substring(j, i+j+1);
				if(longstr.indexOf(temp) >= 0)
				{
					flag = true;
					
					commonstr = temp;
					
					break;
				}
			}
			
			if(flag)
				break;
		}
		
		return commonstr;
	}

	public static String RightMove(String str, int length)
	{
		int len = length % str.length();
		
		StringBuffer sb = new StringBuffer();
		
		sb.append(str.substring(str.length()-len)).append(str.subSequence(0, str.length()-len));
		
		return sb.toString();
	}
	
	public static String LeftMove(String str, int length)
	{
		int len = length % str.length();
		
		StringBuffer sb = new StringBuffer();
		
		sb.append(str.substring(len)).append(str.subSequence(0, len));
		
		return sb.toString();
	}
	
	public static String DeleteStr(String str, int pos, int len)
	{
		StringBuffer sb = new StringBuffer();
		
		sb.append(str.substring(0, pos-1)).append(str.substring(pos+len-1));
		
		return sb.toString();
	}
	
	public static String DeleteStr(String str, char ch)
	{
		return str.replaceAll(String.valueOf(ch), "");
	}
	
	public static int getChineseNum(String str)
	{
		int count = 0;
		
		byte[] array = str.getBytes();
		
		count = array.length - str.length();
		
		return count;
	}
}

 

 

输出如下:

 

2
shandong from am I 
gnodnahs morf ma I
gnodnahs from ma I
true
-1
cdefg
abefcfgcsd
abdeffgsd
456789123
789123456
10

 

0
0
分享到:
评论

相关推荐

    C++中string转换为char*类型返回后乱码问题解决

    在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后得到的...

    C++中的string类

    首先,为了在我们的程序中使用string类型,我们必须包含头文件 &lt;string&gt;。如下: #include &lt;string&gt; //注意这里不是string.h string.h是C字符串头文件 1.声明一个C++字符串 声明一个字符串变量很简单:

    string转bigdecimal类型、一行即可

    string转bigdecimal类型完成了string转bigdecimal类型的操作一行代码搞定

    Java内存分配和String类型的深度解析

    一、引题  在java语言的所有数据类型中,String类型是比较特殊的一种类型,...  2、String类型在执行连接操作时,效率为什么会比StringBuffer或者StringBuilder低?StringBuffer和StringBuilder有什么联系和区别?

    string 类及所有的方法(c++)

    string类 之所以抛弃char*的字符串而选用C++标准程序库中的...首先,为了在我们的程序中使用string类型,我们必须包含头文件 &lt;string&gt;。如下: #include &lt;string&gt; //注意这里不是string.h string.h是C字符串头文件

    包含string对象的结构与memset初始化操作

    memset初始化std::string对象时,按字节顺序将std::string对象所在空间清零,破坏了std::string对象的成员结构,使Myroxy指针资源变为野指针,操作其迭代器会出现不可预知的异常,在存储字符串时可能分配了不必要的...

    String a="hello" String b="hello" a==b 返回true的问题分析

    //在java中有一个常量池,当创建String 类型的引用变量给它赋值时,java会到它的常量池中找"hello world"是不是在常量池中已存在。如果已经存在则返回这个常量池中的"hello world"的地址(在java中叫引用)给变量a 。...

    js字符串类型String常用操作实例总结

    本文实例讲述了js字符串类型String常用操作。分享给大家供大家参考,具体如下: 字符串是不可变的。 对字符串的所有操作都会返回一个新字符串,原字符串不变 在 ie 6-7 时,’ abc ‘ + ‘ cdf ‘ 如果两个大量的...

    string 类型----臭飯飯_C++_string_

    string 类中所有函数介绍,所有的操作基本上都有

    Java当中的String数据类型

    java中String数据类型  对于字符串对象来说,虽然在参数传递的时候也是引用传递,但是java虚拟机在函数内部对字符串对象进行了特殊处理–视String对象为常量(final) 所以对传进来的引用地址所引用的string对象...

    StringUtil.java

    日常使用判断工具类,非空校验,手机号判断,邮箱判断,String类型转换与特殊字符判断,String操作类 等等

    String.h文件

    标准库 - &lt;string.h&gt; 简介 string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。

    C# 特殊的string类型详解

    原因就是.Net考虑到假如大量的操作string对象的时候,大量对引用对象进行操作的时候,性能肯定不如值类型来的爽快。.Net为了提高这个性能,提供了一个专门的解决方案:字符串驻留池! 2.正文 先让我们来看一段代码:...

    C#操作SQL Server中的Image类型数据

    C#操作SQL Server中的Image类型数据 C#操作SQL Server中的Image类型数据 C#操作SQL Server中的Image类型数据 C#操作SQL Server中的Image类型数据 详细介绍请参考: ...

    C++自定义string字符串类

    C++自定义string字符串类,包含字符串的常用操作以及IO流操作

    练习使用Java基本数据类型。使用Java的String类操作字符串和子串

    使用Java的String类操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分...

    Python序列对象与String类型内置方法详解

    本文实例讲述了Python序列对象与String类型内置方法。分享给大家供大家参考,具体如下: 前言 在Python数据结构篇中介绍了Python的序列类型数据结构,这次继续深入的学习序列和String类型对象的内建方法。 软件环境 ...

    面试题:Java String类常见操作和用法

    Java的String类是一个重要的核心类,用于...我们还会讨论字符串与其他数据类型之间的转换、字符串的搜索和分割等常见操作。通过学习本文,您将掌握Java String类的基本用法,并了解如何在实际开发中高效地处理字符串。

    STL库string类的模拟实现

    1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于...2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。

Global site tag (gtag.js) - Google Analytics