第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當沒有正則表達式的字符發(fā)生變化時拆分字符串

當沒有正則表達式的字符發(fā)生變化時拆分字符串

明月笑刀無情 2021-10-06 10:25:24
有一種方法可以使用正則表達式函數(shù)將字符串拆分為重復字符,但我想在不使用它的情況下進行。例如,給定一個字符串,例如:"EE B"我的輸出將是一個字符串數(shù)組,例如{"EE", " ", "B"}我的方法是:給定一個字符串,我將首先找到字符串中唯一字符的數(shù)量,以便我知道數(shù)組的大小。然后我會將字符串更改為字符數(shù)組。然后我會檢查下一個字符是否相同。如果相同,則將它們附加在一起,如果不開始一個新字符串。到目前為止我的代碼..String myinput = "EE B";char[] cinput = new char[myinput.length()];cinput = myinput.toCharArray();    //turn string to array of charactersint uniquecha = myinput.length();for (int i = 0; i < cinput.length; i++) {    if (i != myinput.indexOf(cinput[i])) {        uniquecha--;}   //this should give me the number of unique charactersString[] returninput = new String[uniquecha];Arrays.fill(returninput, "");for (int i = 0; i < uniquecha; i++) {    returninput[i] = "" + myinput.charAt(i);    for (int j = 0; j < myinput.length - 1; j++) {        if (myinput.charAt(j) == myinput.charAt(j + 1)) {            returninput[j] += myinput.charAt(j + 1);        } else {            break;        }    }} return returninput;但是第二部分有問題,因為我不知道為什么當字符改變時它沒有開始一個新的字符串。
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

您的問題說您不想使用正則表達式,但我認為沒有理由要求該要求,除了這可能是家庭作業(yè)。如果您愿意在此處使用正則表達式,那么有一個單行解決方案可將您的輸入字符串拆分為以下模式:


(?<=\S)(?=\s)|(?<=\s)(?=\S)

這種模式使用環(huán)視來分割,無論前面是非空白字符,后面是空白字符,反之亦然。


String input = "EE B";

String[] parts = input.split("(?<=\\S)(?=\\s)|(?<=\\s)(?=\\S)");

System.out.println(Arrays.toString(parts));


[EE,  , B]

    ^^ a single space character in the middle


查看完整回答
反對 回復 2021-10-06
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

如果我理解正確,您希望將字符串中的字符分開,以便類似連續(xù)的字符保持在一起。如果是這種情況,我會這樣做:


public static ArrayList<String> splitString(String str)

{

        ArrayList<String> output = new ArrayList<>();

        String combo = "";


        //iterates through all the characters in the input

        for(char c: str.toCharArray()) {

            //check if the current char is equal to the last added char

            if(combo.length() > 0 && c != combo.charAt(combo.length() - 1)) {

                output.add(combo);    

                combo = "";

            }


            combo += c;

        }

        output.add(combo); //adds the last character


        return output;

}


請注意,我沒有使用數(shù)組(具有固定大?。﹣泶鎯敵?,而是使用了ArrayList具有可變大小的 。此外,與其檢查下一個字符是否與當前字符相等,我更喜歡使用最后一個字符。該變量combo用于在字符轉到 之前臨時存儲它們output。


現(xiàn)在,這是按照您的指南打印結果的一種方法:


public static void main(String[] args) 

{

    String input = "EEEE  BCD DdA";

    ArrayList<String> output = splitString(input);


    System.out.print("[");

    for(int i = 0; i < output.size(); i++) {

        System.out.print("\"" + output.get(i) + "\"");


        if(i != output.size()-1) 

            System.out.print(", ");

    }

    System.out.println("]");

}


運行上述代碼時的輸出將是:


["EEEE", " ", "B", "C", "D", " ", "D", "d", "A"]


查看完整回答
反對 回復 2021-10-06
  • 3 回答
  • 0 關注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號