我正在使用XSSFWorkbook读取Excel工作表数据。当我输入10位数字后有空格的数字时,要在保存之前删除数字后的空格。但是trim(),replaceAll()-所有这些都不能删除空格。使用currentCell.getStringCellValue()提取后,如何从字符串“ 99999999”中删除空格。
尝试使用trim(),replaceAll()方法以及stringUtils.trim()
phoneNumber = currentCell.getStringCellValue()。replaceAll(“”,“”); System.out.println(phoneNumber);
预期是:要删除字符串“ 99999”后的空格为“ 99999”
没有错误消息,但我期望使用所有提到的方法后得到“ 99999”,但得到“ 99999”。
答案 0 :(得分:2)
也许99999后面的字符不是默认的空格,而是其他水平的空白字符,例如不间断空格。
您可以按照此答案https://stackoverflow.com/a/28295733/3915431中所述修剪所有这样的水平空白字符。
使用apache poi
来读取Excel
的完整示例:
import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.*;
class ReadExcel {
public static void main(String[] args) throws Exception {
Workbook workbook = WorkbookFactory.create(new FileInputStream("SAMPLE.xlsx"));
DataFormatter dataFormatter = new DataFormatter();
CreationHelper creationHelper = workbook.getCreationHelper();
FormulaEvaluator formulaEvaluator = creationHelper.createFormulaEvaluator();
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
String cellContent = dataFormatter.formatCellValue(cell, formulaEvaluator);
System.out.println("|"+cellContent+"|");
cellContent = cellContent.trim(); // trims only default white-space
System.out.println("|"+cellContent+"|");
cellContent = cellContent.replaceAll("(^\\h*)|(\\h*$)",""); // trims all horizontal white-space characters
System.out.println("|"+cellContent+"|");
}
}
workbook.close();
}
}
答案 1 :(得分:1)
我尝试使用简单的Java类重现您的问题,但失败了。 字符串的trim()方法工作正常。我相信您的代码中还有其他内容。这是我的简单测试。
class Scratch {
public static void main(String[] args) {
String phoneNumber = "99999999999 ";
System.out.println("before trim = " + phoneNumber.length());
phoneNumber = phoneNumber.trim();
System.out.println("after trim = " + phoneNumber.length());
}
}
结果
before trim = 12
after trim = 11
答案 2 :(得分:0)
尝试使用tostring
,然后尝试下面的代码。
Cell currentCell;
if(currentCell.getCellTypeEnum() == CellType.STRING) {
String phoneNumber = currentCell.toString().trim();
System.out.println(phoneNumber);
}