您不应该反转您阅读的行,而是将该行拆分为一个集合并将其反转。
你做的是颠倒角色,所以你得到这个:
Yes, 4 Chocolate milk -> klim etalocohC 4 , seY如果将该行拆分为["Yes","4","Chocolate milk"],则可以反转该数组/列表。
问题是:我想您希望按顺序保留Chocolate milk,因此您需要定义哪些单词属于一起。如果您的输入始终为, ,则可以首先拆分,,然后将第一个分开,然后分隔剩余部分的第一个空格,以便分割数字和第二个。
更新:试试这个:
String input = "Yes sir, 4 Chocolate milk";
//Pattern is:
//- one or more words separated by whitespace as group 1: ((?:\\w+\\s*)+)
//- a comma
//- optional whitespace: \\s*
//- an integer number as group 2: (\\d+)
//- optional whitespace \\s*
//- an arbitrary rest (which might contain anything) as group 3: (.*)
Pattern p = Pattern.compile( "((?:\\w+\\s*)+),\\s*(\\d+)\\s*(.*)" );
Matcher m = p.matcher( input );
List list = new ArrayList();
while(m.find()) {
list.add( m.group( 1 ) );
list.add( m.group( 2 ) );
list.add( m.group( 3 ) );
}
Collections.reverse( list );
for( String s : list) {
System.out.println(s);
}输出应该是
Chocolate milk
4
Yes sir请注意,这取决于输入的布局,只是为了提供一个开始。您还需要将其与其他模式匹配逻辑集成。