[英]Remove values from Java map and replace with comma using Regex
我有一个正则表达式,它将针对 map 中“:”右侧和“,”左侧的所有内容
我正在使用这个正则表达式:
:(.*?)(,|})
像这样:
$PROP_TYPES.replaceAll(":(.*?)(,|})", ",").concat("}")
这在大多数情况下都很有效,除非表达式遇到“:”右侧的对象
例如,在 TypeScript 中的道具类型定义列表中:
"open": "boolean",
"onDidDismiss": "() => void",
"message": "string",
"showAddReceiptModal": "boolean",
"showModal": "(value: (((prevState: boolean) => boolean) | boolean)) => void",
"vehicleTabRef": "React.MutableRefObject<null>",
"onReceiptSubmit": "(data) => void",
"vehicle": "any",
"showModal1": "boolean",
"showModal2": "(value: (((prevState: boolean) => boolean) | boolean)) => void",
"selectedReceipt": "{ __typename: "Receipt" | undefined; id: string | undefined; purchaseDate: string | undefined; sellerName: string | undefined; sellerAddress: string | undefined; sellerCity: string | undefined; sellerState: string | undefined; sellerZipCode: string | undefined; totalAmount: number | undefined; gallonsPurchased: number | undefined; image?: string | null | undefined | undefined; userID?: string | null | undefined | undefined; vehicleID: string | undefined; vehicle?: Vehicle | null | undefined | undefined; taxRefund?: number | null | undefined | undefined; createdAt: string | undefined; updatedAt: string | undefined }",
"onClick": "() => void",
"onClick1": "() => void",
"dataEditing": "boolean",
"toastMessage": "(val) => void",
"editing": "(bool) => void",
"showToast": "(bool) => void",
"showModal3": "boolean",
"showModal4": "(bool) => void",
"dateFilter": "{ startDate: string; endDate: string }",
当我用这个正则表达式运行 replaceAll 时,替换是一个逗号,我留下了这个:
open,
onDidDismiss,
message,
showAddReceiptModal,
showModal,
vehicleTabRef,
onReceiptSubmit,
vehicle,
showModal1,
showModal2,
selectedReceipt,
,
onClick,
onClick1,
dataEditing,
toastMessage,
editing,
showToast,
showModal3,
showModal4,
dateFilter,
,
注意空逗号,这些不应该在这里。 此表达式应针对“:”右侧的所有内容并将其全部替换为逗号。
此代码使用 VTL 编写,可与 Webstorm IDE 一起使用,以创建快速 typescript 模板。 但是 Java 字符串操作也可以
我可以使用什么正则表达式来仅删除:
右侧的所有内容到结尾的逗号,然后留下那个逗号?
您可能会使用:
^\s*\"([^\"]+)\":.*(?=,)
解释
^
字符串开头\s*
匹配可选的空白字符(或在 Java 中使用\h*
以不匹配换行符)\"([^\"]+)\"
在第 1 组中捕获全部在双引号之间:.*
匹配:
然后是 rest 行(?=,)
正向前瞻,右置逗号在替换使用捕获组 1。
替换后的结果:
open,
onDidDismiss,
message,
showAddReceiptModal,
showModal,
vehicleTabRef,
onReceiptSubmit,
vehicle,
showModal1,
showModal2,
selectedReceipt,
onClick,
onClick1,
dataEditing,
toastMessage,
editing,
showToast,
showModal3,
showModal4,
dateFilter,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.