- Java去除字符串中的空格,回车,换行符和制表符
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtils {
public static String replaceBlank(String str) {
String dest = "";
if (str!=null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
public static void main(String[] args) {
System.out.println(StringUtils.replaceBlank("just do it!"));
}
/*-----------------------------------
笨方法:String s = "你要去除的字符串";
1.去除空格:s = s.replace('\\s','');
2.去除回车:s = s.replace('\n','');
这样也可以把空格和回车去掉,其他也可以照这样做。
注:\n 回车(\u000a)
\t 水平制表符(\u0009)
\s 空格(\u0008)
\r 换行(\u000d)*/
}
- 装饰者模式
实现以下功能:
使用装饰者模式代码如下:
Worker.java
public interface Worker {
public void doSomeWork();
}
Plumber.java
public class Plumber implements Worker{
@Override
public void doSomeWork(){
System.out.println("修水管");
}
}
Carpenter.java
public class Carpenter implements Worker {
@Override
public void doSomeWork(){
System.out.println("修门窗");
}
}
AWorker.java
public class AWorker implements Worker{
private Worker worker;
public AWorker(Worker worker){
this.worker = worker;
}
@Override
public void doSomeWork() {
System.out.println("你好");
worker.doSomeWork();
}
}
Test.java
public class Test {
public static void main(String[] args) {
Plumber plumber = new Plumber();
AWorker aworker = new AWorker(plumber);
aworker.doSomeWork();
}
}
装饰模式:动态地给一个对象添加一些额外的职责
- 抽象组件(Component)角色:组件对象的接口,可以给这些对象动态地添加职责。
- 具体组件(ConcreteComponent)角色:具体的组件对象,实现组件对象接口,通过就是被装饰器装饰的原始对象,也就是可以给这个对象添加额外职责。
- 装饰器(Decorator)角色:所有装饰器的抽象父类,需要定义一个与组件接口相一致的接口,并持有一个Component对象,本质上就是持有一个被装饰的对象。
- 具体装饰器(ConcreteDecorator)角色:实际的装饰器对象,实现具体的要向被告装饰对象添加的额外功能。