替换String中的空格,其中replaceAll在JAVA中不起作用

时间:2017-11-24 08:17:49

标签: java

我尝试将空格删除到包含int类型值的字符串中。

  • 我使用扫描程序方法读取.csv文件。
  • 我使用类来设置/获取数据。
  • 我将数据格式化为类的setter。

输入数据示例:

String Pu_ht = "1 635,90";

基本示例:

/**
 * @param Pu_ht the Pu_ht to set
 */
public void setPu_ht(String Pu_ht) {
    this.Pu_ht = Pu_ht.replace(",", ".").replace(".00", "");
}

尝试过的例子:

  /**
 * @param Pu_ht the Pu_ht to set
 */
public void setPu_ht(String Pu_ht) {
    this.Pu_ht = Pu_ht.replace(",", ".").replace(".00", "").replaceAll("\\s+", "");
}

其他例子:

 /**
 * @param Pu_ht the Pu_ht to set
 */
public void setPu_ht(String Pu_ht) {
    this.Pu_ht = Pu_ht.replace(",", ".").replace(".00", "").replaceAll(" ", "");
}

输出数据示例:1 635.90

我尝试了很多东西,但对我的情况没有任何作用。

祝你好运

编辑:

我的代码:

 public void requete_pommes() throws IOException, ClassNotFoundException, SQLException {
    // open file input stream
    BufferedReader reader = new BufferedReader(new FileReader(filename));

    // read file line by line
    String line = null;
    Scanner scanner = null;
    int index = 0;
    List<Pommes> pomList = new ArrayList<>();
    boolean firstLine = false;

    while ((line = reader.readLine()) != null) {
        if (!(line.equals(";;;;TOTAL HT"))) {

            if (!(line.equals(";;;;"))) {

                Pommes pom = new Pommes();
                scanner = new Scanner(line);
                scanner.useDelimiter(";");
                while (scanner.hasNext()) {
                    String data = scanner.next();


                    pom.setNumero_compte("21826");
                    if ((index == 0)) {
                        pom.setReference(data);
                    } else if ((index == 1)) {
                        pom.setDesignation(data);
                    } else if ((index == 2)) {
                        pom.setQte(data);
                    } else if ((index == 3)) {
                         if(data.equals("1 635,90")){
                              data = data.replaceAll("\\s","");
                              System.err.println("data: " + data);
                         }
                        pom.setPu_ht(data);
                    } else if ((index == 4)) {
                        pom.setMontant_HT(data);
                    } else {
                        System.out.println("invalid data::" + data);
                    }
                    pom.setNumero_commande("1554");

                    index++;
                }
                index = 0;
                pomList.add(pom);

                requeteCorps = "(( SELECT codea FROM article WHERE tarif7 != 'O' AND tarif8 = 'O' AND pvente > 0 AND  COALESCE(trim( reffou), '') != '' AND reffou = '" + pom.getReference() + "' ), " + pom.getQte() + " , " + pom.getPu_ht() + ", '" + kapiece + "', 'stomag','vendu', getnum('LCK')),";

                ar.add(requeteCorps);
            }

        }

    }

2 个答案:

答案 0 :(得分:2)

值“1 635,90”可能源于特定于语言环境的格式,“空格”实际上是一个不间断的空格\u00A0。这通常是为了防止灵活的宽度文本表示在数字内部发生换行。

s = s.replace("\u00A0", "");

答案 1 :(得分:0)

String Pu_ht = "1 635,90";
System.out.println(Pu_ht.replace(",", ".").replace(".00", "").replaceAll("\\s+", ""));

将上述代码放在main方法中并执行。输出将为1635.90,然后检查您的代码。