我有一个字符串,如果字符串包含一个特殊字符(我选择了),例如“+”我想要 基本上拆分字符串,然后取出字符串,直到它遇到另一个特殊字符,如另一个“+”或“ - ”符号(请记住,这些只是因为我希望它们是特殊字符)。
所以我想说我有这个字符串:
String strng = "hi+hello-bye/34";
所以我想要你用什么方法解决这个问题,以某种方式单独返回字符串hello或bye或34。如果字符串递两个“+”符号,我也希望它在这两个“+”字符后返回第一个字符串。
这样的事情:
strng.split("\\+");
但是它没有返回“hello-bye / 34”而只返回“hello”。
答案 0 :(得分:1)
此处的一个选项是将输入字符串拆分为您想到的多个特殊字符分隔符,同时在实际拆分结果中保留这些分隔符。然后,迭代部件数组并返回在感兴趣的特殊分隔符之后立即发生的部分。
这是实现此逻辑的简明方法。我假设您的分隔符集是+
,-
,*
和/
,但您可以轻松地将其更改为您想要的任何内容。
public String findMatch(String input, String delimiter) {
String[] parts = input.split("((?<=[+\\-*/])|(?=[+\\-*/]))");
String prev = null;
for (String part : parts) {
if (delimiter.equals(prev)) {
return part;
}
prev = part;
}
return null; // default value if no match found
}
注意:如果迭代分割输入字符串并且找不到特殊分隔符,或者可能将其作为数组中没有字符串的最后一个元素,则此方法将返回null
进行它。您可以随意将默认返回值更改为您想要的任何值。