我的字符串包含
{我的办公室每天24小时开放,如果您有任何问题(查询)与我们联系。}
我希望将其分解为
{my},{office},{opens},{24},{/},{7},{,},{if},{you},{have},{any}, {question},{{},{query},{)},{contact},{with},{us},{。}
表示,如果单个字符串的字符串仅包含字符或数字将它分开。如果文字包含带有字符或数字的特殊字符,则在特殊字符前分隔字符,在特殊字符后分隔特殊字符和单独的字符
我正在寻找任何解决方案,使用string.split(),或使用任何其他替代逻辑。在此先感谢。
答案 0 :(得分:2)
你可以试试这个:
String str = "my office opens 24/7, if you have any question (query) contact with us.";
String[] splited = str.split("(?=[()./,])|(?<=[()./,])|\\s");
<强>更新强>
正如Rafael Battesti指出的那样,此解决方案不适用于其他特殊字符,例如“@”或“%”。
所以,我认为你可以将正则表达式改为
String[] splited = str.split("(?=[\\W])|(?<=[\\W])");
答案 1 :(得分:1)
我会补充你的答案,因为你有一个非常好的正则表达式!我发现这个答案仍然留下了一些空白。我添加了一些行来生成所询问的确切输出。 : - )
import java.util.ArrayList;
public class Example {
public static void main(String[] args) {
String str = "my office opens 24$7, if you have any question (query) contact with us.";
String[] split = str.split("(?=[\\W])|(?<=[\\W])|\\s");
ArrayList<String> finalList = new ArrayList<>();
for (int i = 0; i < split.length; i++) {
if (!split[i].equals(" ")) {
finalList.add(split[i]);
}
}
//Test
for (String i : finalList) {
System.out.println(i);
}
}
}