1

我有一个问题,其中我有两个字符串,其中一个字符串的长度只有在执行我的函数时才会知道。我想编写我的函数,以便它需要这两个刺,并根据哪个更长,计算一个最终字符串如下 -

finalString = longerStringChars1AND2
   + shorterStringChar1 
   + longerStringChars3and4 
   + shorterStringChar2 
   + longerStringChars5AND6

...依此类推,直到较短的字符串结束。

一旦较短的字符串结束,我想将较长字符串的剩余字符附加到最终字符串,然后退出。我已经写了一些代码,但是我喜欢的循环太多了。有什么建议么?

这是我写的代码 - 非常基本 - public static byte [] generateStringToConvert(String a, String b){ (字符串 b 的长度总是已知为 14。)

    StringBuffer stringToConvert = new StringBuffer(); 

    int longer = (a.length()>14) ? a.length() : 14;
    int shorter = (longer > 14) ? 14 : a.length();

    int iteratorForLonger = 0;
    int iteratorForShorter = 0;
            while(iteratorForLonger < longer) {
                int count = 2;
                while(count>0){
                    stringToConvert.append(b.charAt(iteratorForLonger));

                    iteratorForLonger++;
                    count--; 
                    }

             if(iteratorForShorter < shorter && iteratorForLonger >= longer){
                 iteratorForLonger = 0;
             }
             if(iteratorForShorter<shorter){
                 stringToConvert.append(a.charAt(iteratorForShorter));
                 iteratorForShorter++;
             }
             else{
                 break;
             }


            }
    if(stringToConvert.length()<32 | iteratorForLonger<b.length()){
        String remainingString = b.substring(iteratorForLonger);
        stringToConvert.append(remainingString);
    }
    System.out.println(stringToConvert);
    return stringToConvert.toString().getBytes();

}
4

2 回答 2

1

您可以使用StringBuilder来实现这一点。请在下面找到源代码。

  public static void main(String[] args) throws InterruptedException {

    int MAX_ALLOWED_LENGTH = 14;
    String str1 = "yyyyyyyyyyyyyyyy";
    String str2 = "xxxxxx";

    StringBuilder builder = new StringBuilder(MAX_ALLOWED_LENGTH);
    builder.append(str1);
    char[] shortChar = str2.toCharArray();
    int index = 2;
    for (int charCount = 0; charCount < shortChar.length;) {
        if (index < builder.length()) {
            // insert 1 character from short string to long string
            builder.insert(index, shortChar, charCount, 1);
        }
        // 2+1 as insertion index is increased after after insertion
        index = index + 3;
        charCount = charCount + 1;
    }
    String trimmedString = builder.substring(0, MAX_ALLOWED_LENGTH);
    System.out.println(trimmedString);

}

输出

   yyxyyxyyxyyxyy
于 2012-09-03T13:42:18.007 回答
0
String one = "longwordorsomething";
String two = "short";

String shortString = "";
String longString = "";

if(one.length() > two.length()) {
    shortString = two;
    longString = one;
} else {
    shortString = one;
    longString = two;
}

StringBuilder newString = new StringBuilder();

int j = 0;

for(int i = 0; i < shortString.length(); i++) {
    if((j + 2) < longString.length()) {
        newString.append(longString.substring(j, j + 2));
        j += 2;
    }
    newString.append(shortString.substring(i, i + 1));
}

// Append last part
newString.append(longString.substring(j));  
System.out.println(newString);
于 2012-09-03T12:27:58.103 回答