首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用标点符号修改Java字符串中单词的字符,但保留标点符号的位置?

用标点符号修改Java字符串中单词的字符,但保留标点符号的位置?
EN

Stack Overflow用户
提问于 2019-04-15 11:09:13
回答 2查看 272关注 0票数 3

例如,以下面的String列表为例,忽略反逗号:

"Hello"
"Hello!"
"I'm saying Hello!"
"I haven't said hello yet, but I will."

现在假设我想对每个单词的字符执行特定的操作-例如,假设我想颠倒字符,但保留标点符号的位置。因此,结果将是:

"olleH"
"olleH!"
"m'I gniyas olleH!"
"I tneva'h dias olleh tey, tub I lliw."

理想情况下,我希望我的代码是独立于对字符串执行的操作的(另一个例子是字母的随机洗牌),并且独立于所有标点符号-因此,在执行操作之后,所有连字符、撇号、逗号、句号、en/em破折号等都保留在它们的原始位置。这可能需要某种形式的正则表达式。

为此,我认为我应该保存给定单词中所有标点符号的索引和字符,执行操作,然后在正确的位置重新插入所有标点符号。然而,我想不出一种方法来做这件事,也想不出一个可以使用的类。

我进行了第一次尝试,但不幸的是,这不适用于标点符号,这是关键:

jshell> String str = "I haven't said hello yet, but I will."
str ==> "I haven't said hello yet, but I will."

jshell> Arrays.stream(str.split("\\s+")).map(x -> (new StringBuilder(x)).reverse().toString()).reduce((x, y) -> x + " " + y).get()
$2 ==> "I t'nevah dias olleh ,tey tub I .lliw"

有谁知道我该怎么解决这个问题吗?非常感谢。不需要完整的工作代码--也许只需要一个适当的类的路标,我就可以用来执行这个操作。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55682123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档