第三章. 文本处理

1. 字符编码

字符编码:

  1. ASCII编码采用1 Byte,8 bits,最多256个字符
    – ASCII无法适应其他地方,如汉字数量有十几万
  2. 扩展编码(加字节)
    • ISO8859(1-15) 西欧语言
    • GB2132, GBK,GB18030 ASCII+中文
    • Big5 ASCII + 繁体中文
    • Shift_JIS ASCII+日文
    • ……
  3. Unicode 编码
    :不断扩充,存储全世界所有的字符
    – UTF-8,兼容ASCII,变长(1-4个字节存储字符),经济,方便传输
    – UTF-16,用 变长(2-4个字节)来存储所有字符
    – UTF-32,用32bits(4个字节)存储所有字符

Java的字符编码
源文件编码(.java):采用UTF-8编码
– Eclipse,右键java文件,属性,resource,选择UTF-8
– Eclipse,右键项目,属性,resource,选择UTF-8
程序内部:采用UTF-16编码存储所有字符(不是程序员控制)

  • 和外界(文本文件)的输入输出尽量采用UTF-8编码,不能使用一种编码写入,换另外一种编码读取

2. 高级字符串处理

2.1 正则表达式(regular expression)

:描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
–作用
• 测试字符串内的模式
• 识别/替换文本
• 提取文本

正则表达式的匹配模板:正则表达式语法链接
–定界符
–原子
–特殊功能字符(元字符)
–模式修正符

  • 正则表达式独立于特定语言(Java, Perl, Python, PHP…)
2.1.1 Java的正则表达式

java.util.regex
–Pattern正则表达式的编译表示
• compile 编译一个正则表达式为Pattern对象
• matcher 用Pattern对象匹配一个字符串,返回匹配结果
–Matcher
• Index Methods(位置方法) // start(), start(int group), end(), end(int group)
• Study Methods(查找方法) // lookingAt(), find(), find(int start), matches()
• Replacement Methods(替换方法) //replaceAll(String replacement)

lookingAt(),matches()

package regex;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class MatchesLooking {

    private static final String REGEX = "foo";
    private static final String INPUT =
        "fooO";
    private static Pattern pattern;
    private static Matcher matcher;

    public static void main(String[] args) {
   
        // Initialize
        pattern = Pattern.compile(REGEX);
        matcher = pattern.matcher(INPUT);

        System.out.println("Current REGEX is: "
                           + REGEX);
        System.out.println("Current INPUT is: "
                           + INPUT);

        System.out.println("lookingAt(): "
            + matcher.lookingAt());  //部分匹配
        System.out.println("matches(): "
            + matcher.matches());    //完全匹配
    }
}

replaceAll()

package regex;

import java.util.regex.Pattern; 
import java.util.regex.Matcher;

public class ReplaceDemo {
 
    private static String REGEX = "dog";
    private static String INPUT =
        "The dog says meow. All dogs say meow.";
    private static String REPLACE = "cat";
 
    public static void main(String[] args) {
        Pattern p = Pattern.compile(REGEX);
        // get a matcher object
        Matcher m = p.matcher(INPUT);
        INPUT = m.replaceAll(REPLACE);  //把所有的dog都换成cat
        System.out.println(INPUT);
    }
}

在这里插入图片描述


3. 其他字符串的操作

  1. 字符串和集合互转
    –[1,2,3], “1,2,3”
    – String.join()
  2. 字符串转义
    –对关键字符转义
  3. 变量名字格式化
    –名字驼峰命名
    – CaseFormat.UPPER_UNDERSCORE.to();
  4. 字符串输入流
    –将字符串转为一个输入流
    –IOUtils.toInputStream()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值