我有一些作为API响应获得的烹饪说明,但它是散文版的(下面的样本).我需要格式化并在句子中为每(.)个句号添加一个新行.

"把面粉、鸡蛋、牛奶、1汤匙油和一小撮盐放进碗或大罐子里,然后搅拌成光滑的面糊.如果你有时间的话,留出30分钟休息,或者立即开始烹饪.\r\n用中火把一个中号煎锅或烤盘放到中火上,然后用一些油腻的厨房用纸小心地擦拭它.热的时候,在煎饼的两边各煮1分钟,直到变成金黄色,在你吃的过程中把它们放在低烤箱里加热.\r\n与柠檬角和糖一起食用,或者你最喜欢的馅料.

我正在使用下面的代码,但它没有在句号之后放置新行/换行符.

val input = meal.directions
val formattedDirections = input.replace("\\.\\s?", "\\.\n")

我已经查看了发布在Python、Java、JavaScript、PHP和C++上的类似问题,但我找不到解决办法.

任何了解算法/正则表达式或线索的人,请帮助

推荐答案

replace方法本身将替换所有匹配项,而不只是一个匹配项.

但是,如果您指定一个字符串文字作为第一个参数,它只会逐字替换该字符串,即使它包含正则表达式.

要将第一个参数视为正则表达式,需要将其转换为正则表达式对象,方法是对字符串文字调用.toRegex()方法或创建一个值为Regex的对象.示例代码如下所示,

val formattedDirections = input.replace("\\.\\s?".toRegex(), "\\.\n")

val formattedDirections = input.replace(Regex("\\.\\s?"), "\\.\n")

Android相关问答推荐

显示本地房间数据库中未保存的项目的动态列表

Android从已连接的设备获得GATT

从 Jetpack Compose 中的图像中删除默认高度

任务:app:kaptGenerateStubsDebugKotlin执行失败. > 'compileDebugJavaWithJavac' 任务(当前目标是 1.8)

如何在我的sqlite数据库中获取某个玩家的分数

为一组闪烁的可组合项制作动画,控制同步/定时

Jetpack Compose:如何绘制异形边框?

判断 AAR 元数据时发现 Android 问题:androidx.core:core:1.12.0-alpha01 和 androidx.core:core-ktx:1.12.0-alpha01

AirDroid Business 如何能够从屏幕截图中排除覆盖?

Jetpack Compose 动画性能问题

找不到(包名称).在以下位置搜索:

Compose Accompaniist Pager 中的 TabRow/Tab 重组问题

为 AlertDialog 的消息文本设置自定义字体

在开发过程中我应该把 mp4 文件放在哪里?

jetpack compose 中的可点击指示是什么?

如何在 Jetpack Compose 中禁用 TabRow 或 Tab 中的涟漪效应?

操作系统会终止已启动的服务并调用Service.onDestroy吗?

在 Android 10 (API 29) 中隐藏状态栏并在应用程序中使用其空间

AndroidX Room 生成类错误:类是公共的,应在名为 class.java 的文件中声明

如何将私有 mutableStateOf 分配给 Android Jetpack 中的 State 变量?