我需要从字符串中删除所有白色字符,但我无法这样做。 任何人都知道如何做到这一点?
这是我通过jxl API从excel文件中检索到的字符串:
"Destination à gauche"
这是它的字节:
6810111511610511097116105111110-96-32321039711799104101
我使用的代码来删除空格:
public static void checkEntetes(Workbook book) {
String sheetName = "mysheet";
System.out.print(sheetName + " : ");
for(int i = 0; i < getColumnMax(book.getSheet(sheetName)); i++) {
String elementTrouve = book.getSheet(sheetName).getCell(i, 0).getContents();
String fileEntete = new String(elementTrouve.getBytes()).replaceAll("\\s+","");
System.out.println("\t" + elementTrouve + ", " + bytesArrayToString(elementTrouve.getBytes()));
System.out.println("\t" + fileEntete + ", " + bytesArrayToString(fileEntete.getBytes()));
}
System.out.println();
}
这输出:
"Destination à gauche", 6810111511610511097116105111110-96-32321039711799104101
"Destination àgauche", 6810111511610511097116105111110-96-321039711799104101
我甚至试图自己制作它,它仍然在'à'char之前留下一个空格。
public static String removeWhiteChars(String s) {
String retour = "";
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(c != (char) ' ') {
retour += c;
}
}
return retour;
}
答案 0 :(得分:1)
救援的正则表达式:
str = str.replaceAll("\\s+", "")
将删除任何空格字符序列。例如:
String input = "Destination à gauche";
String output = input.replaceAll("\\s+","");
System.out.println("output is \""+output+"\"");
输出Destinationàgauche
如果您的起点确实是原始字节(byte[]
),您首先需要将它们变成一个字符串:
byte[] inputData = //get from somewhere
String stringBefore = new String(inputData, Charset.forName("UTF-8")); //you need to know the encoding
String withoutSpaces = stringBefore.replaceAll("\\s+","");
byte[] outputData = withoutSpaces.getBytes(Charset.forName("UTF-8"));
答案 1 :(得分:0)
如果您想使用公式,TRIM功能将完全符合您的要求:
+----+------------+---------------------+
| | A | B |
+----+------------+---------------------+
| 1 | =TRIM(B1) | value to trim here |
+----+------------+---------------------+
所以要做整个专栏。 1)插入一列 2)插入TRIM函数指向您正在尝试更正的单元格。 3)将公式复制到页面上 4)复制插入的列 5)粘贴为“值”
参考:stackoverflow.com上的问题编号9578397