我试图在每个“。”处拆分一个字符串。或者 ”?” 我使用这个正则表达式:
(?<=(?!.[0-9])[?.])
从理论上讲,如果该点后跟一个数字,则代码还可以防止拆分,因此不会拆分诸如 3.000 之类的内容,并且它还包括新字符串中的点。
例如,如果我有这样的文字:“你好。你最喜欢的号码是什么?它是 3.560。” 我想得到这个:“你好。”,“你最喜欢的号码是什么?”,“它是 3.560。”
我在我的电脑上做了一个简单的 java 程序,它的工作方式和我想要的完全一样:
String[] x = c.split("(?<=(?!.[0-9])[?.])");
for(String v : x){
System.out.println(v);
}
但是,当我在我的 Android 应用程序中使用相同的正则表达式时,它不会拆分任何内容......
x = txt.split("(?<=(?!.[0-9])[?.])");
//This, in my android app, returns an array with only one entry which is the whole string without splitting.
PS。使用 (?<=[?.]) 有效,因此问题必须出在 (?!.[0-9]) 部分,该部分旨在排除后跟数字的点。