我用split函数分割字符串,当遇到+和-时都进行分割。但我如何知道到底是遇到-分割的还是遇到+分割的?因为我需要判断正负
时间: 2024-10-29 12:16:56 浏览: 22
c++split函数
5星 · 资源好评率100%
当你使用`split()`函数时,它默认按照给定的分隔符(这里是"+"和"-")将字符串切分成多个部分。如果你希望区分是由于 "+" 还是 "—" 分割,你需要稍微调整一下处理过程。你可以创建两个独立的列表,一个用于存储由 "+" 分割的部分,另一个用于存储由 "—" 分割的部分。然后遍历这两个列表,分别记录对应的正负情况。
例如,在Java中,可以这样做:
```java
String str = "a+b-c-d+e-f";
List<String> plusParts = new ArrayList<>();
List<String> minusParts = new ArrayList<>();
String[] splitItems = str.split("[+-]"); // 使用正则表达式匹配 + 和 -
for (int i = 0; i < splitItems.length; i++) {
if (splitItems[i].startsWith("+")) {
plusParts.add(splitItems[i]);
} else if (splitItems[i].startsWith("-")) {
minusParts.add(splitItems[i]);
}
}
boolean isPositive = plusParts.size() > minusParts.size();
boolean isNegating = false;
StringBuilder output = new StringBuilder();
for (String part : plusParts) {
output.append(isPositive ? "+" : "-"); // 根据当前状态添加正负号
output.append(part);
}
for (String part : minusParts) {
if (!isNegating) { // 如果上一个元素不是负号,则这次开始负号
isNegating = true;
output.append("-");
}
output.append(part);
}
System.out.println(output.toString());
```
在这个例子中,我们首先创建了两个列表来分别存储由 "+" 和 "-" 分割的部分。然后,我们在构建输出字符串时,根据当前状态(`isPositive` 和 `isNegating`)来添加相应的正负号。最后,我们将这两个列表的内容合并成一个字符串。
**相关问题--:**
1. 如何处理输入字符串中既有"+"又有"-"的情况?
2. 如果我想同时保存每个部分的正负信息,应该怎么做?
3. 如果字符串中只包含一个运算符(如 "+", "-", 或者二者都没有),这个方法还能正常工作吗?
阅读全文