[英]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.