如何将没有任何分隔符的字符串转换为逗号分隔的字符串?

时间:2016-08-04 09:02:19

标签: hadoop mapreduce hive apache-pig

我有一个文件details.txt,其中存储的数据采用这种格式

        "571955NandhithaF1975-12-222011-12-06Mumbai"    

列是前六位唯一ID,  姓名,(男/女)性别,警察,加入日期和地点 我必须使用逗号分隔符将它分成六列! 请帮助我解决这个问题

2 个答案:

答案 0 :(得分:1)

将每一行传递给包含以下逻辑的正则表达式函数:

    String expression = "571955NandhithaF1975-12-222011-12-06Mumbai";

    Pattern pattern = Pattern
            .compile("([0-9]{6})([a-zA-Z]+)([M|F])([0-9]{4}-[0-9]{2}-[0-9]{2})([0-9]{4}-[0-9]{2}-[0-9]{2})([a-zA-Z0-9]+)");
    Matcher matcher = pattern.matcher(expression);
    if (matcher.find()) {
        //System.out.println(matcher.group());
        System.out.println(matcher.group(1));
        System.out.println(matcher.group(2));
        System.out.println(matcher.group(3));
        System.out.println(matcher.group(4));
        System.out.println(matcher.group(5));
        System.out.println(matcher.group(6));
    }

输出:

571955
Nandhitha
F
1975-12-22
2011-12-06
Mumbai

答案 1 :(得分:0)

571955NandhithaF1975-12-222011-12-06Mumbai

要拆分此类数据,我们必须在 下的 映射器 类中使用java中的 String 函数地图 方法 您可以使用substring(beginindex,endindex)方法从字符串中获取Id 像string id[6]=substring(0,5)那样返回6位数字的字符串。(因为ID是固定长度,我们取6)

您可以使用substring(beginindex)来获取剩余的字符串。

接下来在病房你必须在java中使用 REGXP ..以及split(regexp)获取名称,性别,dob,doj,loc。
但绝对是一些锻炼与java发生。

完成this link for String functions in java.


希望这篇文章有所帮助。 如果也接受任何建议或修改:)