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 }