最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 實(shí)現(xiàn)截取字符串并按字節(jié)分別輸出實(shí)例代碼

 更新時(shí)間:2017年03月08日 11:49:48   投稿:lqh  
這篇文章主要介紹了java 實(shí)現(xiàn)截取字符串并按字節(jié)分別輸出實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下

java 實(shí)現(xiàn)截取字符串并按字節(jié)分別輸出實(shí)例代碼

前言:

請(qǐng)編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。但是要保證漢字不被截半個(gè),如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”6,應(yīng)該輸出“我ABC”,而不是“我ABC”+“漢”字的半個(gè)。

2、解析思想

本題容易產(chǎn)生困惑的是中文字符和英文字符如何處理,在這里需要考慮漢字和英文字符的占用字節(jié)數(shù)問題,中文字符占兩個(gè)字節(jié),英文字符占一個(gè)字節(jié),了解這個(gè)關(guān)鍵點(diǎn)后,那么編寫代碼就容易啦!

3、Java代碼

import java.util.Scanner;

public class Interception {
  static String ss; //要進(jìn)行截取操作的字符串
  static int n; //截取的字符串的字節(jié)數(shù)
  public static void main(String[] args) {
    System.out.println("請(qǐng)輸入字符串:");
    Scanner scStr = new Scanner(System.in); //從鍵盤獲取字符串
    ss = scStr.next(); //將Scanner對(duì)象中的內(nèi)容以字符串的形式取出來
    System.out.println("請(qǐng)輸入字節(jié)數(shù):");
    Scanner scByte = new Scanner(System.in); //從鍵盤獲取字符串
    n = scByte.nextInt(); //將Scanner對(duì)象中的內(nèi)容以數(shù)值的形式取出來
    Interception(setValue()); //方法與方法間的套用
  }

  public static String[] setValue() { //此方法的作用是將字符串轉(zhuǎn)換成字符串?dāng)?shù)組
    String[] string = new String[ss.length()]; //創(chuàng)建一個(gè)字符數(shù)組string
    for (int i = 0; i < string.length; i++) {
      string[i] = ss.substring(i, i + 1);  //將字符串ss中的第i個(gè)字符取出,放入字符數(shù)組中string中
    }
    return string; //將這個(gè)字符數(shù)組返回
  }

  public static void Interception(String[] string) {
    int count = 0;
    String m = "[\u4e00-\u9fa5]"; //漢字的正則表達(dá)試
    System.out.println("每" + n + "字節(jié)進(jìn)行劃分的字符串如下所示:");
    for (int i = 0; i < string.length; i++) {
      if (string[i].matches(m)) { //將字符數(shù)組中的每一個(gè)元素與表則表達(dá)式進(jìn)行匹配,如果相同則返回true
        count = count + 2; //如果當(dāng)前字符是漢字,計(jì)數(shù)器count就加2
      } else {
        count = count + 1; //如果當(dāng)前字符不是漢字,計(jì)數(shù)器count就加1
      }
      if (count < n) { //如果當(dāng)前計(jì)數(shù)器count的值小于n,則輸出當(dāng)前字符
        System.out.print(string[i]);
      } else if (count == n) { //如果當(dāng)前計(jì)數(shù)器count的值等于n,則輸出當(dāng)前字符
        System.out.print(string[i]);
        count = 0;
        System.out.println(); //內(nèi)循環(huán)結(jié)果,則需要換行,起到控制打印格式的作用
      } else {
        count = 0; //如果當(dāng)前計(jì)數(shù)器count的值大于n,則計(jì)數(shù)器count清零,接著執(zhí)行外部循環(huán)
        System.out.println();
      }
    }
  }
}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • mybatis創(chuàng)建項(xiàng)目報(bào)Invalid?bound?statement?(not?found)錯(cuò)誤解決方法

    mybatis創(chuàng)建項(xiàng)目報(bào)Invalid?bound?statement?(not?found)錯(cuò)誤解決方法

    使用MyBatis能夠幫助我們將SQL語句和Java代碼分離,這篇文章主要給大家介紹了關(guān)于mybatis創(chuàng)建項(xiàng)目報(bào)Invalid?bound?statement?(not?found)錯(cuò)誤的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • JAVA中IP和整數(shù)相互轉(zhuǎn)化的方法

    JAVA中IP和整數(shù)相互轉(zhuǎn)化的方法

    這篇文章主要介紹了JAVA中IP和整數(shù)相互轉(zhuǎn)化的方法,涉及java數(shù)值轉(zhuǎn)換的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • mybatis plus 自動(dòng)轉(zhuǎn)駝峰配置小結(jié)

    mybatis plus 自動(dòng)轉(zhuǎn)駝峰配置小結(jié)

    SpringBoot提供兩種配置Mybatis的方式,第一種是通過yml或application.properties文件開啟配置,第二種是使用自定義配置類,通過給容器添加一個(gè)ConfigurationCustomizer來實(shí)現(xiàn)更靈活的配置,這兩種方法可以根據(jù)項(xiàng)目需求和個(gè)人喜好選擇使用
    2024-10-10
  • eclipse創(chuàng)建項(xiàng)目沒有dynamic web的解決方法

    eclipse創(chuàng)建項(xiàng)目沒有dynamic web的解決方法

    最近上課要用到eclipse,要用到Dynamic web project.但是我下載的版本上沒有.接下來就帶大家了解 eclipse創(chuàng)建項(xiàng)目沒有dynamic web的解決方法,文中有非常詳細(xì)的圖文示例,需要的朋友可以參考下
    2021-06-06
  • Spring?data?jpa緩存機(jī)制使用總結(jié)

    Spring?data?jpa緩存機(jī)制使用總結(jié)

    這篇文章主要介紹了Spring?data?jpa緩存機(jī)制使用總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java線程池中Worker線程執(zhí)行流程原理解析

    java線程池中Worker線程執(zhí)行流程原理解析

    這篇文章主要為大家介紹了java線程池中Worker線程執(zhí)行流程原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java中Date、LocalDate、LocalDateTime、LocalTime、時(shí)間戳之間的相互轉(zhuǎn)換代碼

    Java中Date、LocalDate、LocalDateTime、LocalTime、時(shí)間戳之間的相互轉(zhuǎn)換代碼

    這篇文章主要介紹了Java中日期時(shí)間轉(zhuǎn)換的多種方法,包括將Date轉(zhuǎn)換為L(zhǎng)ocalDateTime、LocalDate等,以及將時(shí)間戳轉(zhuǎn)換為L(zhǎng)ocalDateTime,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • SpringBoot中的@Component注解源碼

    SpringBoot中的@Component注解源碼

    在SpringBoot中,@Component注解用于標(biāo)識(shí)一個(gè)類為Bean,并由Spring進(jìn)行管理,它需要配合@ComponentScan注解使用,后者負(fù)責(zé)掃描包含@Component的類,并進(jìn)行自動(dòng)裝配,本文給大家介紹SpringBoot中的@Component注解源碼,感興趣的朋友一起看看吧
    2024-01-01
  • java中Class.forName方法的作用詳解

    java中Class.forName方法的作用詳解

    Class.forName(xxx.xx.xx) 返回的是一個(gè)類,但Class.forName方法的作用到底是什么終?下面這篇文章就來給大家詳細(xì)介紹了關(guān)于java中Class.forName方法的作用,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • spring?boot項(xiàng)目使用@Async注解的坑

    spring?boot項(xiàng)目使用@Async注解的坑

    這篇文章主要為大家介紹了spring?boot項(xiàng)目中使用@Async注解遇到的坑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論

惠东县| 扎鲁特旗| 家居| 汉中市| 安义县| 马公市| 高淳县| 简阳市| 秦安县| 永德县| 延川县| 高尔夫| 专栏| 天祝| 温泉县| 鹤庆县| 绥江县| 德江县| 龙州县| 丹阳市| 金溪县| 犍为县| 上高县| 南涧| 马关县| 临洮县| 囊谦县| 斗六市| 房山区| 昭觉县| 平遥县| 阳东县| 措勤县| 万安县| 巴塘县| 景东| 乐陵市| 岑巩县| 宝鸡市| 盐山县| 江口县|