我希望有一些好人可以帮助我从一行中读取一个char和byte,其数据类型为Text。
我有一个Text.toString(),其中模式是前2个字符后跟2个字节和剩余的字符。这是70的固定长度文件。
我必须忽略2个字节,2个字节显示为特殊字符(有时显示为单个字符,有时显示为2个字符)。
我尝试使用UTF-8,iso-8859-1,CP850,US-ASCII等,如下所示
byte[] utf8bytes = value.toString().getBytes("iso-8859-1");
LOG.info(new String(utf8bytes, Charset.forName("UTF-8")));
输入数据:
12��00a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002
12ɹ00a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002
输出应该是: 1200a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002 1200a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002
此脚本位于Hadoop Mapper中。 任何帮助都会很棒,因为我一直努力工作。
谢谢你, Revathy。
答案 0 :(得分:0)
没有什么可以做到这一点。
答案 1 :(得分:0)
如果您确定String
中的所有其他字符都是字母数字,则可以使用replaceAll
删除它们。请注意,我将空间留在那里,因为看起来您的预期输出想要保留它。
str = str.replaceAll("[^A-Za-z0-9 ]", "");