字符串的处理

一、字符串常用API

1、数据类型的转换
(1)字符串 --> 字符数组:char[] ch = 字符串. toCharArray();
(2)字符串 --> 字节数组:byte[] b = 字符串. getBytes();
(3)字符串 --> 可变字符序列:StringBuilder sb = new StringBuilder( “字符串” );
(4)可变字符序列 --> 字符串:String str = 可变字符序列.toString();
(5)基本数据类型 --> 字符串:String str = 基本数据类型的值 + “ ”;
(6)字符串 --> 基本数据类型:基本数据类型 a = 基本数据类型包装类.parseXxx( “字符串” );
说明:除Character类之外,其它所有包装类,都有对应的 parseXxx() 静态方法,可以将字符串转换为基本数据类型。
(7)字符串 --> 整型:int num = Integer.valueOf(“字符串”);
(8)字符 --> 整型:int num = 字符 - ‘0’; // 字符‘0’的ASCII码值是48,char型减去48位正好是其对应的int值

2、字符串的常见操作
(1)判断
public boolean equals(Object obj)
public boolean equalsIgnoreCase(String str):忽略大小写的字母字符串比较
public boolean startsWith(String prefix):判断此字符串是否以指定的前缀开始
public boolean endsWith(String suffix):判断此字符串是否以指定的后缀结尾

(2)获取
public int length():返回字符串的长度
public String concat(String str):将指定字符串拼接到此字符串后面
public char charAt(int index):返回指定索引处的单个字符
public int indexOf(String str):返回子字符串第一次出现的索引
public String substring(int beginIndex):从指定索引开始位置,截取到此字符串末尾
public String substring(int beginIndex, int endIndex):从指定索引开始位置,截取到指定索引结束位置(不包含endIndex)

(3)转换
public char[] toCharArray():将字符串转换为字符数组
public byte[] getBytes():将字符串转换为字节数组
public String replace(String target, String replacement):用新字符串替换指定字符串

(4)分割
public String[] split(String regex):将字符串按指定的正则表达式规则,拆分为字符串数组

二、长整数的和

1、实现求两个超长非负数之和
要求:
(1)不损失精度
(2)首位均不出现无意义得0
(3)不出现无意义的小数点(如:1.00应该为1)
(4)不得使用除字符操作外的函数

import java.util.Scanner;

public class LongIntegerSum{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String num1 = sc.nextLine();
		String num2 = sc.nextLine();
		String sum = add(num1, num2);
	  	System.out.println(sum);
 	}
 
 	private static String add(String num1, String num2) {
  		StringBuilder sb = new StringBuilder();
  		// 表示是否向前进位
  		int prev = 0;
  		// 使两个字符串的长度相同
  		while(num1.length() != num2.length()) {
	   		if(num1.length() > num2.length()) {
	    		num2 = "0" + num2;
	   		}else{
	    		num1 = "0" + num1;
	   		}
  		}
 
	  // 将两个字符串转换为字符数组
	  char[] ch1 = num1.toCharArray();
	  char[] ch2 = num2.toCharArray();
	  for(int i = num1.length()-1; i >= 0; i--) {
		   // 字符‘0’的ASCII值是48,char型减去48位正好是其对应的int值
		   int m = ch1[i] - '0';     
		   int n = ch2[i] - '0';
		   // 对应位上两数字相加的和,加上进位的值     
		   int temp = m + n + prev;        
	   
		   if(temp >= 10) {
				// 当两数字之和满10时,进位!
				sb.append(temp - 10);
				prev = 1;
		   } else  {
			    // 当两数字之和不满10时,不进位!
			    sb.append(temp);
			    prev = 0;
		   }
	  }
	  // 当两个数字最高为相加满10时,向前进一位
	  if(prev == 1) {
	   	sb.append('1');
	  }
	  // 整个字符数组反转后,转为字符串输出
	  return sb.reverse().toString();
 	}
}

三、求字符串最后一个单词长度

1、计算字符串最后一个单词的长度,单词以空格隔开。
(1)输入:输入一行,代表要计算的字符串,非空,长度小于5000。
(2)输出:输出一个整数,表示输入字符串最后一个单词的长度。

public class LastWordlength {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();

        int i = str.length() - 1;
        int t = 0;
        while(i >= 0 && str.charAt(i) != ' '){
            t++;
            i--;
        }
        System.out.println(t);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值