【问题标题】:Regular expression arraylist正则表达式数组列表
【发布时间】:2014-06-16 03:19:25
【问题描述】:

我正在使用一个数组列表来存储我作为 csv(逗号分隔值)写入 txt 文件的浮点值。我的非北美用户使用小数点逗号“,”而不是句点“。”时遇到了问题。

这是我使用德语语言环境的文件之一的输出:

 ,0,003, 0,06, 0,22, 1,01
, 0,015, 0,06, 0,21, 1,02

这是美国版,可以作为 csv 文件正常工作:

 ,0.007, -0.05, 0.75, 0.72
, 0.014, -0.04, 0.76, 0.71

如何修复德语版本?我只需要替换用分号分隔每个值集的逗号。

【问题讨论】:

    标签: java android regex csv arraylist


    【解决方案1】:

    以下模式(example online) 与小数逗号匹配。

    (?<=[\d]),(?=[\d]+(?:,|$|\s))
    

    然后你用句号替换它。

    java代码示例:

    System.out.println("0,003, 0,06, 0,22, 1,01 , 0,015, 0,06, 0,21, 1,02".replaceAll("(?<=[\\d]),(?=[\\d]+(?:,|$|\\s))", "."));
    

    【讨论】:

    • 代码中存在无效的转义序列。谢谢您的帮助。无效的转义序列(有效的是 \b \t \n \f \r \" \' \\ )
    • 是的,我太着急了,留下了一些错误,非常抱歉。但我希望它有所帮助{:
    【解决方案2】:

    以下内容现在应该可以工作了。

    假设:

    • 所有数字都包含逗号

    正则表达式:

    (\d+),(\d+)
    

    替换:

    $1.$2
    

    Java:

    import java.util.regex.*;
    
    public class JavaRegEx2 {
    public static void main(String[] args) {
        String line = ", 0,003, 0,06, 0,22, 1,01 , -0,015, 0,06, 0,21, 1,02";
        String pattern = "(\\d+),(\\d+)";
    
        String updated = line.replaceAll(pattern, "$1.$2"); 
    
        System.out.println(updated);
    
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多