Java 中怎么把string类中每个数字单独抽出来
时间: 2023-05-19 15:00:59 浏览: 40
可以使用正则表达式来实现这个功能,具体代码如下:
```java
String str = "abc123def456";
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
```
这段代码会输出字符串中每个数字,即:
```
1
2
3
4
5
6
```
相关问题
需要Java版本的,每行数据需要单独放在map中
好的,以下是一个将Excel文件内容读取到List<Map<String, Object>>中的Java示例代码:
```java
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ReadExcelToList {
public static void main(String[] args) {
String filePath = "example.xlsx";
try (InputStream is = new FileInputStream(filePath);
Workbook workbook = WorkbookFactory.create(is)) {
Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
List<Map<String, Object>> dataList = new ArrayList<>();
for (int i = 1; i <= sheet.getLastRowNum(); i++) { // 遍历每一行
Row row = sheet.getRow(i);
Map<String, Object> dataMap = new HashMap<>();
for (int j = 0; j < row.getLastCellNum(); j++) { // 遍历每一列
Cell cell = row.getCell(j);
String key = sheet.getRow(0).getCell(j).getStringCellValue(); // 获取列名
Object value = getValue(cell); // 获取单元格的值
dataMap.put(key, value);
}
dataList.add(dataMap);
}
// 输出List中的内容
for (Map<String, Object> dataMap : dataList) {
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + " ");
}
System.out.println();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static Object getValue(Cell cell) {
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue().trim();
case NUMERIC:
return cell.getNumericCellValue();
case BOOLEAN:
return cell.getBooleanCellValue();
case FORMULA:
return cell.getCellFormula();
case BLANK:
return "";
default:
return "";
}
}
}
```
这段代码使用 Apache POI 库来读取 Excel 文件,将每行数据放在一个 Map 中,然后将 Map 放入 List 中。这里假设 Excel 文件中的数据在第一个 Sheet 中,如果需要读取其他 Sheet 的数据,只需要修改代码中的 getSheetAt(0) 方法的参数即可。
flowable 怎么把每个任务节点的数据库操作放到单独的事务中
在 Flowable 中,每个任务节点的数据库操作默认都是在同一个事务中执行的。如果需要将每个任务节点的数据库操作放到单独的事务中,可以使用 Spring 提供的事务机制来实现。
具体步骤如下:
1. 在 Spring 配置文件中开启事务管理器:
```
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
```
2. 在任务节点的 Java 类中添加 `@Transactional` 注解,并指定事务的传播行为为 `REQUIRES_NEW`:
```
@Service
public class MyTaskService {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void completeTask(String taskId, Map<String, Object> variables) {
// 执行任务节点的业务逻辑
...
// 完成任务
taskService.complete(taskId, variables);
}
}
```
这样,每个任务节点的数据库操作都会在单独的事务中执行。如果某个任务节点的数据库操作失败,只会回滚该任务节点的事务,而不会影响其他任务节点的事务。