java 按单词反转字符串_Java - 反转字符串中的单词

本文介绍了一种处理字符串的有效方法,即如何正确地拆分并反转字符串中的元素,而不是直接反转整个字符串。通过使用正则表达式和Java集合操作,文章详细解释了如何保持特定组合词组的完整性,并提供了实现这一目标的具体代码示例。
摘要由CSDN通过智能技术生成

您不应该反转您阅读的行,而是将该行拆分为一个集合并将其反转。

你做的是颠倒角色,所以你得到这个:

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请注意,这取决于输入的布局,只是为了提供一个开始。您还需要将其与其他模式匹配逻辑集成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值