我有一个字符串,我需要更换'.'
,'_'
并'-'
用空格字符。下面的代码工作正常。
String value = "my-test-is-here.and.here_and_even-here";
value = value.replaceAll("[\\._-]", " ");
我的问题是,在这样的字符串中,"my test - your text"
我需要保持由空格(' - '
)包围的破折号不变。我试图像这样向前看和向后看
"[\\._((?<!\\s)-(?!\\s)){1}]"
但我收到以下异常。
01-15 08:45:12.786: E/AndroidRuntime(25950): java.util.regex.PatternSyntaxException: In a character range [x-y], x is greater than y near index 14:
01-15 08:45:12.786: E/AndroidRuntime(25950): [\._((?<!\s)-(?!\s)){1}]
01-15 08:45:12.786: E/AndroidRuntime(25950): ^
我究竟做错了什么?
更新:我最终得到以下表达式,该表达式完全满足了我的需求。
"[._]|(?<!\\s)-(?!\\s)|(-$)|(^-)"
将断言放到角色类之外,然后将断言放到后面。
value = value.replaceAll("[._]|(?<!\\s)-(?!\\s)", " ");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句