如何在JAVA中在单词末尾得到大写字母后反转单词?

假设您有一个字符串和一个大写字母表示一个单词的结尾。例如,如果您有wElovEcakE,其中E,E和K分别表示单词wE,lovE和cakE的结尾。您需要反转每个单词(因为您知道单词的结尾)。整体上不要颠倒弦。为了说明这一点,如果我们给wElovEcakE作为输入,则输出应该为EwEvolEkac。看到wE变成了Ew,lovE变成了Evol,等等。...

以及我尝试使用..

的方式
import java.util.Scanner;

public class Alternative {

    public static void main(String[]args) {

        Scanner robo=new Scanner (System.in);
        System.out.println("Enter  a word ");
        String word=robo.nextLine();
        char[] array=word.toCharArray();
        for(int i =0;i<array.length;i++){
            int count =0;
            for(int j=0;j<=("EMPTY");j++)  // here i am trying to operate a loop where it will work up to the Capital letter.
                count ++; 
            }
 //Code incomplete
        }
    }
}

上面我在条件部分中提到了“空” ...我想操作一个循环,在该循环中,我的循环将工作至大写字母,然后我将计算所有我已算作大写字母的字母,然后最后一步就像我将进行另一个循环,在该循环中我将反转所有字母,而循环的条件将

如果您认为我的方法是正确的,可以帮我在“空”部分写条件吗? 你们可以以其他任何方式帮助我解决问题吗?

hellokitys 回答:如何在JAVA中在单词末尾得到大写字母后反转单词?

这是一个利用StringBuilder类来保存和反转找到的每个单词的解决方案。

Scanner robo = new Scanner (System.in);
System.out.println("Enter a word:");
String word = robo.nextLine();
robo.close();
String upperCase = word.toUpperCase(); //used to find uppercase letters

StringBuilder builder = new StringBuilder();
for (int i = 0; i < word.length(); i++) {
    char nextChar = word.charAt(i);
    builder.append(nextChar);
    if (nextChar == upperCase.charAt(i)) {
        String subWord = builder.reverse().toString();
        System.out.print(subWord); //It's not clear what to do with the found words
        builder = new StringBuilder();
    }
}
System.out.println();

示例

  

输入单词:
  makEmorEpiE
  EkamEromEip

,

测试是否适合您

three.js R110
,
public class Alternative {
public static void main(String[] args) {

    Scanner robo = new Scanner(System.in);

    System.out.println("Enter  a word ");
    String word = robo.nextLine();
    char[] array = word.toCharArray();
    int count = -1;
    for (int i = 0; i < array.length; i++) {

        if (Character.isUpperCase(array[i])) { //find the upper case letters in the word
            for (int j = i; j > count; j--) //loop through the letters until the last count variable value is encountered
                System.out.print(array[j]); //print the reversed values
            count = i; //assign the last encountered uppercase letter's index value to count variable
        }

    }
}
}
,

这是我使用Regex模式的解决方案

    String[] in = "wElovEcakE".replaceAll("([A-z]+?[A-Z])","$1,").replaceAll(",$","").split(",");
    String out = "";
    for(String current: in){
        StringBuilder temp = new StringBuilder(); 
        temp.append(current);
        out+=temp.reverse();
    }
    System.out.println(out);

结果:

EwEvolEkac
,

您可以尝试以下解决方案:

String textInvert = "wElovEcakE";
String revertText = textInvert
      .chars().mapToObj(c -> (char) c)
      .reduce(new LinkedList<>(Arrays.asList(new StringBuilder())),(a,v) -> {
          a.getLast().append(v);
          if (Character.isUpperCase(v)) {
              a.add(new StringBuilder());
          }
          return a;
      },(a1,a2) -> a1)
      .stream()
      .map(s -> s.reverse())
      .reduce(StringBuilder::append)
      .map(StringBuilder::toString)
      .get();

System.out.println(revertText);
本文链接:https://www.f2er.com/3166820.html

大家都在问