嘿,我想用下划线替换随机字母(仅第一个字母)。为此,我使用以下行:
String newSubstring=substring.replaceFirst(randomLetter,"_");
除非有括号“(”或“)”,否则效果很好。然后我得到以下异常:
06-14 15:29:48.090: E/AndroidRuntime(12466): FATAL EXCEPTION: main
06-14 15:29:48.090: E/AndroidRuntime(12466): Process: com.clozegenerator, PID: 12466
06-14 15:29:48.090: E/AndroidRuntime(12466): java.util.regex.PatternSyntaxException: Incorrectly nested parentheses in regexp pattern near index 1:
06-14 15:29:48.090: E/AndroidRuntime(12466): )
06-14 15:29:48.090: E/AndroidRuntime(12466): ^
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.util.regex.Pattern.compileImpl(Native Method)
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.util.regex.Pattern.compile(Pattern.java:411)
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.util.regex.Pattern.<init>(Pattern.java:394)
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.util.regex.Pattern.compile(Pattern.java:381)
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.lang.String.replaceFirst(String.java:1804)
06-14 15:29:48.090: E/AndroidRuntime(12466): at com.clozegenerator.MainActivity.generateCloze(MainActivity.java:138)
06-14 15:29:48.090: E/AndroidRuntime(12466): at com.clozegenerator.MainActivity.onClick(MainActivity.java:113)
06-14 15:29:48.090: E/AndroidRuntime(12466): at android.view.View.performClick(View.java:4480)
06-14 15:29:48.090: E/AndroidRuntime(12466): at android.view.View$PerformClick.run(View.java:18673)
06-14 15:29:48.090: E/AndroidRuntime(12466): at android.os.Handler.handleCallback(Handler.java:733)
06-14 15:29:48.090: E/AndroidRuntime(12466): at android.os.Handler.dispatchMessage(Handler.java:95)
06-14 15:29:48.090: E/AndroidRuntime(12466): at android.os.Looper.loop(Looper.java:157)
06-14 15:29:48.090: E/AndroidRuntime(12466): at android.app.ActivityThread.main(ActivityThread.java:5872)
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.lang.reflect.Method.invokeNative(Native Method)
06-14 15:29:48.090: E/AndroidRuntime(12466): at java.lang.reflect.Method.invoke(Method.java:515)
06-14 15:29:48.090: E/AndroidRuntime(12466): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1069)
06-14 15:29:48.090: E/AndroidRuntime(12466): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
06-14 15:29:48.090: E/AndroidRuntime(12466): at dalvik.system.NativeStart.main(Native Method)
有什么想法可以解决吗?
replaceFirst
用途正则表达式作为第一个参数,在正则表达式(
和)
特殊(他们打开和关闭组为例),所以你需要使用实例来逃避他们\\(
或他们周围有\\Q
\\E
代表的报价。
但是为了避免手动转义,您可以使用Pattern.quote
类似
String newSubstring=substring.replaceFirst(Pattern.quote(randomLetter),"_");
问题内容: 嘿,我想用下划线替换随机字母(仅第一个字母)。为此,我使用以下行: 除非有括号“(”或“)”,否则效果很好。然后我得到以下异常: 有什么想法可以解决吗? 问题答案: 用途正则表达式作为第一个参数,在正则表达式和特殊(他们打开和关闭组为例),所以你需要使用实例来逃避他们或他们周围有 代表的报价。 但是为了避免手动转义,您可以使用类似
8mm轴承支架 A 36mm电机支架 42步进电机支架 57步进电机支架(黑) 主控板支架 B 支架 3*3 支架 L1 支架 P1 支架 P3 支架 U1 25电机支架 37电机支架 MECDS-150 舵机支架 U形支架 B U形支架 C 通用电机支架
概述 支架U1通常用作伺服系统、电机和轴的结构支撑或连接点。它带有3个8mm中心孔可连接8mm轴,24个4mm孔可与makeblock平台零件兼容。 参数 材质:6061铝 厚度:3mm 尺寸图纸 搭建案例
概述 支架P3主要是用来配合安装从动轮的,如62T同步带轮。它带有4mm安装孔和两端的螺纹槽, 可以轻松地组装在其他结构上, 兼容大多数Makeblock机械部件和轮子。 参数 材质:6061铝 长度:33mm 宽度:24mm 高度:10mm 尺寸图纸 搭建案例
概述 平面上4mm安装孔和两端的螺纹槽, 可以轻松地组装在其他结构上, 兼容大多数Makeblock机械部件。 参数 材质:6061铝 长度:33mm 宽度:8mm 高度:10mm
概述 支架L1常用来加固直角结构,有两个直径为8mm的孔和16个M4安装孔。也可作为辅助件配合单孔梁、双孔梁、方梁来搭建系统框架。 参数 材质:6061铝 厚度:2mm 尺寸图纸 搭建案例