MapReduce编程中常用的字符操作

本文主要用于记录自己在编写mapreduce程序时常用的一些方法,后期会不断更新,用于自己复习和给新手一些帮助。

字符串操作

        String str = "  12345";
//		字符串中是否包含某子字符串
        System.out.println(str.contains("123"));

//		返回索引位置
        System.out.println(str.indexOf("1"));

//		截取字符串,从索引0开始到索引3(包括前不包括后)   只有一个参数时表示从该索引一直截取到最后
        String str2 = str.substring(0, 3);
        System.out.println(str2);

//		截取第一个逗号以前的字符串
        String str1 = "1,2,3,4,5";
        String substring = str1.substring(0, str1.indexOf(","));
        System.out.println(substring);

//		字符串替换
        System.out.println(str.replace("123", "321"));

//		trim()去除字符串两边的空格  ltrim()去除左边的空格   rtrim()去除右边的空格
        System.out.println(str.trim());

//		==比较的是2个字符串是否指向同一地址,equals()比较的是实际字符串,比如大小写,长度等

字符串数组操作

//		将字符串数组转化成字符串	 import org.apache.commons.lang.StringUtils;
        String[] array = {"abc", "123", "45"}; 
        System.out.println(StringUtils.join(array,','));

        //字符串按,或;分割成数组
        String str = "abc,def;gh,ij;k;lm,no,p;qr,st";
        String[] temp = str.split("[,;]");
//		Arrays.toString()方法,数组输出为字符串 格式[abc, def, gh, ij, k, lm, no, p, qr, st]
        System.out.println(Arrays.toString(temp));

//		字符串数组的截取
        String[] a = {"a","b","c","d","e","f","g","h","i"};
        //包括前不包括后
        String[] b = Arrays.copyOfRange(a, 0, 5);
        System.out.println(StringUtils.join(b,","));

StringBuilder操作

//		String 是不可变的对象,经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响
//		StringBuilder线程不安全的(用在字符串缓冲区被单个线程使用的时候)  优先考虑使用,速度快
//		StringBuffer线程安全的(用于多线程)			
//		StringBuilder sb = new StringBuilder();
//		在最后追加
//		sb.append(1);
//		sb.append(2);
//		在索引位置前插入
//		sb.insert(1, "a");
//		删除指定索引位置的字符   删除最后一个字符
//		sb.deleteCharAt(sb.length()-1);
//		删除指定索引的字符串,包括前不包括后
//		sb.delete(0, 1);
//		System.out.println(sb.toString());

输出文件中文乱码问题

mapreduce处理的文字格式都是utf-8,如果输入的正文编码格式是gbk,可以自定义方法,将其转为utf-8

	// 处理gbk格式的输入文件 Text text1 = transformTextToUTF8(value, "gbk");
	public static Text transformTextToUTF8(Text text, String encoding) {
		String value = null;
		try {
			value = new String(text.getBytes(), 0, text.getLength(), encoding);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return new Text(value);
	}
posted @ 2018-05-17 10:24  py小杰  阅读(1212)  评论(0编辑  收藏  举报