rowNo = isSubList() ? (i > 1 ? rowNo + 1 : rowNo + i) : i + 1 + rownum - startNo;将这个嵌套的三元运算提取到一个独立的语句中。
时间: 2024-03-21 14:38:12 浏览: 17
可以将嵌套的三元运算提取到一个独立的语句中,如下所示:
```java
if (isSubList()) {
if (i > 1) {
rowNo = rowNo + 1;
} else {
rowNo = rowNo + i;
}
} else {
rowNo = i + 1 + rownum - startNo;
}
```
这段代码与原来的代码等价,但更易读懂。首先,我们使用了 if 语句替换了三元运算符,使代码更加清晰。其次,我们将嵌套的三元运算符拆分成了两个 if 语句,避免了代码过于复杂的情况。最后,我们为每个分支分别设置了具体的操作,使代码更加直观。
相关问题
{"ROWNO":"1","备注":"","电子健康卡":"sss"} C++正则表达式取键和值
可以使用C++标准库中的正则表达式库`<regex>`来实现。下面是一个示例代码,可以取出键和值:
```C++
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = R"({"ROWNO":"1","备注":"","电子健康卡":"sss"})";
std::regex pattern(R"(([^:{}\"]+)|(\".+\"))");
auto it = std::sregex_iterator(input.begin(), input.end(), pattern);
while (it != std::sregex_iterator()) {
std::smatch match = *it;
std::string str = match.str();
// 去除可能存在的引号
if (str.front() == '\"' && str.back() == '\"') {
str = str.substr(1, str.size() - 2);
}
std::cout << str << '\n';
++it;
}
return 0;
}
```
输出结果为:
```
ROWNO
1
备注
电子健康卡
sss
```
其中,正则表达式`([^:{}\"]+)|(\".+\")`的含义为:
- `[^:{}\"]+`匹配不包含`{`、`}`、`:`、`"`的连续字符;
- `|`表示或者,`(\".+\")`匹配由引号包含的连续字符。
由于输出结果中的键和值都是字符串,因此需要去除可能存在的引号,即将`"ROWNO"`转换为`ROWNO`。
{"total":0,"rows":[{"ROWNO":"1","家庭ID":"134116"}]} C++正则表达式取rows值
以下是使用 C++ 正则表达式取 rows 值的示例代码:
```c++
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = R"({"total":0,"rows":[{"ROWNO":"1","家庭ID":"134116"}]})";
std::regex re(R"("rows":\[(.*)\])");
std::smatch matches;
if (std::regex_search(input, matches, re)) {
std::string rows_value = matches[1].str();
std::cout << rows_value << std::endl; // 输出:[{"ROWNO":"1","家庭ID":"134116"}]
} else {
std::cout << "No match" << std::endl;
}
return 0;
}
```
解释:
1. `input` 存储需要匹配的字符串。
2. `re` 存储正则表达式,其中 `(.*)` 匹配任意字符,使用 `\[(.*)\]` 可以匹配方括号内的字符串。
3. `std::regex_search` 函数用于查找匹配项,`matches` 存储匹配结果。
4. `matches[1].str()` 取出匹配到的第一个子表达式中的字符串,即 rows 值。
输出结果为 `[{"ROWNO":"1","家庭ID":"134116"}]`。