欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java探索之string字符串的应用代码示例

程序员文章站 2024-02-19 12:06:04
string类中提供了丰富的用于操作字符串的方法。 int indexof(string str) 该方法用于返回当给定字符串在当前字符串中的位置,若当前字符串...

string类中提供了丰富的用于操作字符串的方法。

int indexof(string str)

该方法用于返回当给定字符串在当前字符串中的位置,若当前字符串不包含给定字符串则返回-1。

重载的方法

int indexof(string str,int formindex),从指定下标处(包含)查询子串,返回返回当给定字符串在当前字符串中的位置,若当前字符串不包含给定字符串则返回-1。

用自己的算法实现startswith和endswith功能。

package com.hz.practice;
/**
 * 1. 用自己的算法实现startswith和endswith功能。
 * @author ztw
 *
 */
public class practice01 {
  public static void main(string[] args) {
    string str = "qwewrewr";
//   boolean temp = str.endswith("r");
//   system.out.println(temp);
    /*
     * startswith
     */
    char[] arr = str.tochararray();
    char c = 'r';
    if(arr[0]==c){
      system.out.println("true");
    }else{
      system.out.println("false");
    }
    /*
     * endswith
     */
    if(arr[arr.length-1]==c){
      system.out.println("true");
    }else{
      system.out.println("false");
    }
  }
}

输出结果:

false 
true

2.采用字符的移位方式实现字符文本加密解密。

package com.hz.practice;
import java.util.scanner;
/**
 * 2.采用字符的移位方式实现字符文本加密解密。
 * @author ztw
 *
 */
public class practice02 {
  public static void main(string[] args) {
    system.out.println("请输入一个字符串");
    scanner sc =new scanner(system.in);
    string str1 = new string();
    str1=sc.nextline();    
    system.out.println(str1.replaceall("a", "1.")
        .replaceall("b", "2.").replaceall("c", "3.")
        .replaceall("d", "4.").replaceall("e", "5.")
        .replaceall("f", "6.").replaceall("g", "7.")
        .replaceall("h", "8.").replaceall("i", "9.")
        .replaceall("j", "10.").replaceall("k", "11.")
        .replaceall("l", "12.").replaceall("m", "13.")
        .replaceall("n", "14.").replaceall("o", "15.")
        .replaceall("p", "16.").replaceall("q", "17.")
        .replaceall("r", "18.").replaceall("s", "19.")
        .replaceall("t", "20.").replaceall("u", "21.")
        .replaceall("v", "22.").replaceall("w", "23.")
        .replaceall("x", "24.").replaceall("y", "25.")
        .replaceall("z", "26."));
  }
}

输出结果:

请输入一个字符串 
asdsddffg 
1.19.4.19.4.4.6.6.7.

3.验证是随机生成4位验证码,由用户输入并否输入正确, 如果输入错误就生成新的验证码让用户重新输入,最多输入5次!

package com.hz.practice;
import java.util.random;
import java.util.scanner;
/**
 * 3.验证是随机生成4位验证码,由用户输入并否输入正确,
 * 如果输入错误就生成新的验证码让用户重新输入,最多输入5次
 * @author ztw
 *
 */
public class practice03 {
  public static void main(string[] args) {
    string str="0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
    char[]arr=new char[4];//定义一个长度是4的char型数组
    random sj=new random();
    system.out.println("验证码是:");
    for(int i=0;i<4;i++)
    {
      arr[i]=str.charat(sj.nextint(61));//从str中随机截取4个单个字符并赋值给arr这个数组存放
    }
    system.out.println(arr);
    scanner sc=new scanner(system.in);
    system.out.println("请输入验证码");
    string a=new string(arr);//把数组转换成字符串
    //定义输入次数
    for(int j=0;j<5;j++)
    {
      if(sc.nextline().equals(a))
      {
        system.out.println("验证码输入正确");
      }
      else
      {
        system.out.println("验证码输入有误,请重新输入");
        if(j<=3)
        {
          system.out.print("请输入验证码");
          for(int i=0;i<4;i++)
          {
            arr[i]=str.charat(sj.nextint(61));//从str中随机截取4个单个字符并赋值给arr这个数组存放
          }
          system.out.println(arr);
          a=new string (arr);
        }
        else
        {
          system.out.println("输入有误,对不起,5次机会已用完");
        }
      }
    }
  }
}

输出结果:

验证码是: 
ava8 
请输入验证码 
ava8 
验证码输入正确
package com.hz.practice;

/**
 * 4.获取一个字符串在另一个字符串中出现的次数
  思路:
  1.定义一个计数器。
  2.获取子串第一次出现的位置
  3.从第一次出现的位置后剩余的字符串中继续获取子串出现的位置,每获取一次计数器加1
  4,当获取不到时,计数完成
 * @author ztw
 *
 */
public class practice04 {

  public static void main(string[] args) {

    string str1 = "asdasdas";
    string str2 = "as";
    //1.定义一个计数器。
    int total = 0;
    for (string temp = str1; temp!=null && 
        temp.length()>=str2.length();) {
      //2.获取子串第一次出现的位置
      if(temp.indexof(str2) == 0){
        //3.从第一次出现的位置后剩余的字符串中继续获取子串出现的位置,每获取一次计数器加1
        total ++;
      }
      temp = temp.substring(1);
      system.out.print(temp+", ");
    }
    //4,当获取不到时,计数完成
    system.out.println("计数完成:"+total);
  }
}

输出结果:

sdasdas, dasdas, asdas, sdas, das, as, s, 计数完成:3
package com.hz.practice;
/**
 * 5.获取两个子串中最大相同子串
   思路:
   1.将短的哪个子串按照长度递减的方式获取到
   2.将每次获取到的子串去长串中判断是否包含,如果包含,已经找到
 * @author ztw
 *
 */
public class practice05 {
   public static string getmaxsubstring(string s1,string s2) { 
      string max = "",min = ""; 
      max = (s1.length()>s2.length())?s1: s2; 
      min = (max==s1)?s2: s1;    
//     sop("max="+max+"...min="+min); 
      for(int x=0; x<min.length(); x++) 
      { 
        for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) 
        { 
          string temp = min.substring(y,z);         
          sop(temp); 
          if(max.contains(temp))//if(s1.indexof(temp)!=-1) 
            return temp; 
        } 
      } 
      return ""; 
    } 
    public static void main(string[] args)  
    { 
      string s1 = "ab"; 
      string s2 = "cvhellobnm"; 
      sop(getmaxsubstring(s2,s1)); 
    } 
    public static void sop(string str) 
    { 
      system.out.print(str+", "); 
    } 
}

输出结果:

ab, a, b, b,
package com.hz.practice;
import java.util.scanner;
/**
 * 6、写一个方法判断一个字符串是否对称
 * @author ztw
 *
 */
public class practice06 {
  public static void main(string[] args){
    scanner input = new scanner(system.in);
    string str = input.next();//接收任意字符串
    isok1(str);            
}
  /**
   * 判断字符串是否对称的方法(一)
   * 通过取取索引对应值来进行一一比对
   * @param str
   */
  public static void isok1(string str){
      boolean result = true;
      int count =(str.length()-1)/2;
      for (int x=0;x<=count;x++ ){
          if(str.charat(x)!=str.charat(str.length()-1-x)){
              result = false;
              break;
          }
      }
      if(!result)
          system.out.println("该字符串是不对称的");
      else
          system.out.println("该字符串是对称的");
  }
  /*
   * public static void main(string[] args){
        scanner input = new scanner(system.in);
      string str = input.next();//接收任意字符串
          if (isok2(str)==true) {
            system.out.println("真,对称!");
        }else{
            system.out.println("假,不对称!");
        }
    }
    /**
     * 方法二
     * 通过string加强类中的取反方法reverse获取其逆向值
     * 再与原字符串相比是否相等!
     * 等于则返回true,否则false
     * @param str
     * @return
     */
  /*
    public static boolean isok2(string str){
        stringbuffer sb = new stringbuffer(str);
        string str2 = sb.reverse().tostring();
        return str.equals(str2);
    }
   */
}

输出结果:

asdsa 
该字符串是对称的
package com.hz.practice;
/**
 * 
  9、编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
  “to be or not to be",将变成"ot eb ro ton ot eb."。
 * @author ztw
 *
 */
public class practice09 {
  public static void main(string[] args) {
    string str = "to be or not to be";
    string[] str2 = str.split(" ");
    for (int i = 0; i < str2.length; i++) {
      char[] ci = str2[i].tochararray();
      system.out.print(" ");
      for (int j = ci.length-1; j >= 0 ; j--) {
        system.out.print(ci[j]);
      }
    }
  }
}
package com.hz.practice;
/**
 * 10、已知字符串:"this is a test of java". 
  按要求执行以下操作:
  (1) 统计该字符串中字母s出现的次数
  (2) 取出子字符串"test"
  (3) 用多种方式将本字符串复制到一个字符数组char[] str中.
  (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
  (5) 用两种方式实现该字符串的倒叙输出。(用stringbuffer和for循环方式分别实现)
  (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
 * @author ztw
 *
 */
public class practice10 {
  public static void main(string[] args) {
    string str = "this is a test of java";
//   (1) 统计该字符串中字母s出现的次数
    int count = 0;
    for (int i = 0; i < str.length(); i++) {
      if(str.charat(i)=='s'){
        count++;
      }
    }
    system.out.println("字符串中字母s出现的次数:"+count);
//   (2) 取出子字符串"test"
    string str2 = (string) str.subsequence(10, 14);
    system.out.println(str2);
//   (3) 用多种方式将本字符串复制到一个字符数组char[] str中.
    char[] c = str.tochararray();
    system.out.println(c);
    for (int i = 0; i < c.length; i++) {
      system.out.print(c[i]);
    }
    system.out.println();
//   (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
      str=str.tolowercase();
      string[] tt=str.split(" ");
      system.out.println(tt.length);
      for(int i=0;i<tt.length;i++)
      {  
        //加个判断,长度大于0的
        if(tt[i].length()>0){
          system.out.print(string.valueof(tt[i].charat(0)).touppercase());
          system.out.print(tt[i].substring(1)+" ");
        }
      }
      system.out.println();
//   (5) 用两种方式实现该字符串的倒叙输出。(用stringbuffer和for循环方式分别实现)
      stringbuffer sb = new stringbuffer(str);
      system.out.println(sb.reverse().tostring());
      char[] c3 = str.tochararray();
      for (int i = c3.length-1; i >= 0 ; i--) {
        system.out.print(c3[i]);
      }
      system.out.println();
//   (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
      string[] str5=str.split(" ");
      for (int i = 0; i < str5.length; i++) {
        system.out.print(str5[i]+", ");
      }
  }
}

输出结果:

字符串中字母s出现的次数:3 
test 
this is a test of java 
this is a test of java 
6 
this is a test of java 
avaj fo tset a si siht 
avaj fo tset a si siht 
this, is, a, test, of, java,

总结

以上就是本文关于java探索之string字符串的应用代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:浅谈java编程tostring()方法重写的意义、等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!