public class Test {

public static void main(String[] args) {
String str = "!!!??!!!!%*)%¥!KTV去符号标号!!当然,,。!!..**半角";
System.out.println(str);
String str1 = str.replaceAll("[\\pP\\p{Punct}]", "");
System.out.println("str1:" + str1);

String str2 = str.replaceAll("[//pP]", "");
System.out.println("str2:" + str2);

String str3 = str.replaceAll("[//p{P}]", "");
System.out.println("str3:" + str3);
}
}

 
采用 Unicode 标点属性方式的正则表达式,可以去掉所有的标点符号,
包括全角、半角、横排、竖排等的标点符号。

注意一下,如果在 JDK 5 或以下的环境中,全角单引号对、双引号对
无法替换掉,这是 JDK 5 及以下版本缺失的,在 JDK 6 中由于加入了
Pi 和 Pf 两个 Unicode 子属性,因此就能替换掉。

在 JDK 6 以下的版本中可以这样:

Java code

 

?

1
str = str.replaceAll("[\\pP‘’“”]""");

即手工加上去。



Unicode 编码并不只是为某个字符简单定义了一个编码,而且还将其进行了归类。

\pP 其中的小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀。

大写 P 表示 Unicode 字符集七个字符属性之一:标点字符。

其他六个是

L:字母;
M:标记符号(一般不会单独出现);
Z:分隔符(比如空格、换行等);
S:符号(比如数学符号、货币符号等);
N:数字(比如阿拉伯数字、罗马数字等);
C:其他字符

上面这七个是属性,七个属性下还有若干个子属性,用于更进一步地进行细分。

Java 中用于 Unicode 的正则表达式数据都是由 Unicode 组织提供的。

Unicode 正则表达式标准(可以找到所有的子属性)
http://www.unicode.org/reports/tr18/

各 Unicode 字符属性的定义,可以用一看看某个字符具有什么属性。
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt

这个文本文档一行是一个字符,第一列是 Unicode 编码,第二列是字符名,第三列是 Unicode 属性,
以及其他一些字符信息。

采用 Unicode 标点属性方式的正则表达式,可以去掉所有的标点符号,的更多相关文章

  1. [转]Net 下采用GET/POST/SOAP方式动态调用WebService C#实现

    本文转自:http://www.cnblogs.com/splendidme/archive/2011/10/05/2199501.html 一直以来,我们都为动态调用WebService方法而烦恼. ...

  2. Java与编码问题串讲之二–如何理解java采用Unicode编码

    Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法).由于java采用unicode编码,char  ...

  3. 如何理解java采用Unicode编码

    http://blog.csdn.net/gjb724332682/article/details/43229563 Java中字符仅以一种形式存在,那就是Unicode.由于java采用unicod ...

  4. Cocoa 框架为什么采用两阶段的方式来创建对象?

    对于之前一直使用C#语言的我来说,刚开始接触Objective-c来创建对象时很迷惑,为何创建对象一般情况下需要通过发送两个消息(调用两个方法)才能创建一个类实例对象(例如[[UIButton all ...

  5. 采用Post请求的方式提交参数并导出excel

    一般情况下,我们都是采用get请求的方式导出excel.例如采用如下方式: var exportUrl = '/xxx;'; window.open(exportUrl); 导出excel所需的逻辑参 ...

  6. nginx 多域名配置,采用多配置文件的方式

    nginx 中多域名配置,目前采用多配置文件的方式. 配置过程比较简单. 首先在 nginx 目录下创建子目录 vhosts . 在 vhosts 目录中创建对应域名的配置文件.如有域名 898hi. ...

  7. javascript总结44: DOM对象的dataset属性方式

    1 DOM设置属性的特殊方式: DOM对象的dataset属性方式获取data-xxx方式定义的属性 由于我们经常需要在标签上自定义属性来存储数据或状态,但是如果用传统的方式操作起来比较繁琐,而且不熟 ...

  8. 采用MySQL_upgrade升级授权表方式升级

    1.7.1 采用MySQL_upgrade升级授权表方式升级(1) 这种升级方式比较省事,通过MySQL_upgrade命令即可完成.下面来演示一下整个升级过程. 1)修改my.cnf配置文件,因为M ...

  9. PHP采用301跳转方式防CC拦截

    PHP采用301跳转方式防CC拦截   降低CC攻击的效果 <?php empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); $second ...

随机推荐

  1. 让人又爱又恨的Lombok,到底该不该用

    1 简介 Lombok,印尼的一个岛屿,龙目岛.但在Java的世界里,它是一个方便的类库,能提供很多便利,因此得到许多人的青睐.但也有不少反对声音.这是为什么呢? 之前去龙目岛拍的日落. 2 Lomb ...

  2. 使用Apache commons email发送邮件

    今天研究了以下怎么用java代码发送邮件,用的是Apache的commons-email包. 据说这个包是对javamail进行了封装,简化了操作. 这里讲一下具体用法吧 一.首先你需要有邮箱账号和一 ...

  3. MFC中窗口启动后,CEdit编辑框默认光标位置设置,顺序的调节方法

    MFC中窗口启动后,CEdit编辑框默认光标位设置,顺序的调节方法 在编辑界面按下ctrl+D键,就会出现所有控件的Tab键顺序,按照自己想要的顺序依次点击控件,就可以重新安排顺序.数值1就是默认停留 ...

  4. 绕过PowerShell执行策略方法总结

    默认情况下,PowerShell配置为阻止Windows系统上执行PowerShell脚本.对于渗透测试人员,系统管理员和开发人员而言,这可能是一个障碍,但并非必须如此. 什么是PowerShell执 ...

  5. C#多线程编程(一)进程与线程

    一. 进程 简单来说,进程是对资源的抽象,是资源的容器,在传统操作系统中,进程是资源分配的基本单位,而且是执行的基本单位,进程支持并发执行,因为每个进程有独立的数据,独立的堆栈空间.一个程序想要并发执 ...

  6. Ehcache基础入门

    1. 基本介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要 ...

  7. v-forv-for指令的三种使用方法

    1.迭代数组 <p v-for="(item,i) in list">id:{{item.id}}---名字:{{item.name}}---索引{{item.age} ...

  8. maven跳过测试打包

    1.在执行run as时候加上参数: clean install compile -Dmaven.test.skip=true   2.在pom文件中添加如下: <plugins> < ...

  9. MongoDB副本集replica set(三)--添加删除成员

    在上一篇文章中,我们搭建了3个节点的副本集,集群信息如下: rstest:PRIMARY> rs.config() { "_id" : "rstest", ...

  10. Idea+springboot入坑之路

    环境准备 IDEA 社区版: 2019.3 jdk: 1.8.0_241 tomcat: 7.0.99 maven: 3.6.3 spring-boot:2.2.5.RELEASE 插件 spring ...