char字符串迭代的char变量

时间:2015-11-05 06:24:07

标签: java

如何在字符串中向左或向右移动char字符?

3 个答案:

答案 0 :(得分:2)

向后读取输入字符串,您需要将每个字符保留在每个单词的奇数索引和任何空白字符上。

您可以从此代码段开始。将其视为PoC以演示逻辑。可以进行优化。

String encoded = "bxoqb swi eymrawn yim";
StringBuilder decoded = new StringBuilder();
boolean keep = true;
for (int i = encoded.length() - 1; i >= 0; i--) {
    if (encoded.charAt(i) != ' ') {
        if (keep) {
            decoded.append(encoded.charAt(i));
        }
        keep = !keep;
    } else {
        decoded.append(' ');
        keep = true;
    }
}
System.out.println("decoded = " + decoded);

<强>输出

decoded = my name is bob

<强>解释

  • for-loop向后处理字符串,因此字符处理为miy nwarmye iws bqoxb
  • 变量i保存字符串encoded
  • 中的当前索引位置
  • 因为我们只想保留单词中奇数位置上的字符,变量keep用作指示符
  • 当变量keeptrue时,我们将当前字符(字符串i中位置encoded上的字符)附加到字符串缓冲区decoded < / LI>
  • 如果当前处理的字符不是,则keep的值被否定(true-&gt; false,false-&gt; true),所以我们在每个奇数位置附加字符
  • 因为我们需要在单词之间保留,我们必须单独处理,每个都附加到decodedkeep设置为{{1所以下一个非空白字符也会被添加

答案 1 :(得分:0)

试试这个:

StringBuilder builder = new StringBuilder();
String[] charArray = encoded.split(" ");
for(int i = charArray.length-1 ; i >= 0; i--){
    builder.append(charArray[i]);
}
String decoded = builder.toString();

答案 2 :(得分:0)

您必须使用 StringBuffer 来反转句子。然后您可以使用单词之间的空格逐字分割您的句子。在那之后基本的java知识...

     String ss = "bxoqb swi eymrawn yim";
     StringBuilder buffer = new StringBuilder(ss);
     String word[] = buffer.reverse().toString().split(" ");
     for (String word1 : word) {
         char c[]=word1.toCharArray();
         for(int x=0;x<c.length;x++){
             if(x%2==0){
                 System.out.print(c[x]);
             }
         }
         System.out.print(" ");
     }