String的使用方法和正则式的体现

String  字符串
    一串字符就是字符串:char[],String,StringBuilder
     1   字符产“字面量”都是String类型实例
         String 内部就是一个char[].
     2   String API  有一个实现原则:对象内容永远被容不变
      也就是说:String对象永远不变
     3   String 字面量(直接量),如果相同,会替换为同一个String对象的引用,
                          常量连接的结果也被优化为同一个字符串。 
     4   String 的比较equals  , hasCode()
     5  String API(字符串的常用方法)
      这些方法如果返回String  一定是一个新String对象
      toString()除外.
      API 方法:
      charAt()
      length()
      trim()
      indexOf()
      lastIndexOf()
      endsWith()
      startsWith()
      substring(int start,int end)
      substring(int start)

正则表达式:  负责的字符串匹配处理规则,应用广泛,
 学习简历:1   要能够都统正则表达式
    2   能够写出简单的
    3   不要过多的分配学习时间!
 可以应用于:java grep  vi
 1  字符集:[1234]表示1,2,3,4之一]      
          [^12]表示出了1,2
         [1-5]表示1,2,3,4,5之间
         [a-f]表示a-f之间的
         [0-9a-fA-F]表示:一个16进制字符
         [0-9a-f]{1,2}一到两次之间^[a]{5}$    从头到尾匹配5个a
      预定义字符集:
         \d:[0-9]
         .:任意字符
         \w:单词字符[0-9a-zA-Z]
         \s:匹配空白:空格,\t,\r....
      
    2 {m,n} 数词
          {n}
          {m,n}
          ?:{0,1}  一个或者零个
          +:{1,n}  一个以上
          *:{0,n}  零个以上
    3 ^开头
      $结尾
     
邮政编码:   ^[0-9][0-9][0-9][0-9][0-9][0-9]$ 
      ^[0-9]{6}$
      ^\d{6}$
      
用户名规则:^\w{8,10}$
电话话:+86  13971754408
     规则:  ^(\+86)?\s?\d{11}$      
身份证号码:^\d{15}(\d{2}[0-9x])?$      
一个点的坐标:^\d+(,\s*|\s+)?\d+$
       3,2   3  2  3, 2  s

  1 import java.util.Scanner;
2
3
4
5 public class Commons {
6
7
8
9 /**
10
11 * @param args
12
13 * 实现Commons的StringUtils
14
15 * 1 支持指定 字符和长度的leftPad
16
17 * 输入:"1234",10,'#'
18
19 * 输出:######1234 "?\d+"?
20
21 * 2 支持指定 字符和长度的rightPad
22
23 * 输入:"1234",10,'#'
24
25 * 输出:1234######
26
27 * 3 提供repeat方法,讲一个字符串按照指定次数重复并返回
28
29 * 输入:"123",4
30
31 * 输出:123123123123
32
33 * 4 提供join方法将数组按照指定分隔符连接成字符串
34
35 * 输入:new Integer[]{1,2,3,4},"-"
36
37 * 输出:1-2-3-4
38
39 */
40
41 public static void main(String[] args) {
42
43 // TODO Auto-generated method stub
44
45 stringUtils();
46
47 }
48
49 public static void stringUtils(){
50
51 Scanner console=new Scanner(System.in);
52
53 System.out.println("请输入:");
54
55 String str=console.nextLine();
56 //1 实现
57 // leftPad(str);
58 //2 实现
59 // rightPad(str);
60
61 // //下列两个的str与前两个不一样
62 //3 实现
63 // repeat(str);
64 s//4 小题实现
65 join(str);
66
67 }
68
69 private static String join(String str) {
70
71 // TODO Auto-generated method stub
72
73 String []data=str.split("]|]\\s?");
74
75 //System.out.println(data[1]);
76
77 String []data1=data[1].split("}\\s?,\\s?|}\\s+");
78
79 System.out.println(data1[0]+"---"+data1[1]);
80
81 //1,2,3,4
82
83 // String a=data1[0].replaceAll("{", "");
84
85 int check=data1[0].indexOf("{");
86
87 String subStr=data1[0].substring(check+1);
88
89 System.out.println(subStr);
90
91 // -
92
93 String b=data1[1].replaceAll("\"", "");
94
95 System.out.println(b);
96
97 //分别存放数组里的数值
98
99 String []dint=subStr.split(",\\s?");
100
101 String all="";
102
103 for(int i=0;i<dint.length;i++)
104
105 {
106
107 if(i==dint.length-1)
108
109 {
110
111 all+=dint[i];
112
113 }else
114
115 all+=(dint[i]+b);
116
117 }
118
119 System.out.println(all);
120
121 return all;
122
123 }
124
125 private static String repeat(String str) {
126
127 // TODO Auto-generated method stub
128
129 String []data=str.split(",\\s?|\\s+");
130
131 String data0=data[0].replaceAll("\"","");
132
133 int b=Integer.parseInt(data[1]);
134
135 String sum="";
136
137 for(int i=0;i<b;i++)
138
139 {
140
141 sum+=data0;
142
143 }
144
145 return sum;
146
147 }
148
149 private static String rightPad(String str) {
150
151 // TODO Auto-generated method stub
152
153 String []data=str.split(",\\s?|\\s+");
154
155 String data0=data[0].replaceAll("\"","");//.split("\"");行不通
156
157 int n=data0.length();
158
159 int a=Integer.parseInt(data0);
160
161 //System.out.println(data0);
162
163 int b=Integer.parseInt(data[1]);
164
165 String data2=data[2].replaceAll("\'","");
166
167 //int c=Integer.parseInt(data2);
168
169 String sum="";
170
171 for(int i=0;i<b-n;i++)
172
173 {
174
175 sum+=data2;
176
177 }
178
179 return a+sum;
180
181 }
182
183 public static String leftPad(String str){
184
185 String []data=str.split(",\\s?|\\s+");
186
187 String data0=data[0].replaceAll("\"","");//.split("\"");行不通
188
189 int n=data0.length();
190
191 int a=Integer.parseInt(data0);
192
193 //System.out.println(data0);
194
195 int b=Integer.parseInt(data[1]);
196
197 String data2=data[2].replaceAll("\'","");
198
199 //int c=Integer.parseInt(data2);
200
201 String sum="";
202
203 for(int i=0;i<b-n;i++)
204
205 {
206
207 sum+=data2;
208
209 }
210
211 return sum+a;
212
213 }
214
215 // public static String[] pad(String str){
216
217 // return null;
218
219 // }
220
221 }

  

posted @ 2011-07-26 08:33  牧涛  阅读(2663)  评论(0编辑  收藏  举报