Skip to content

Commit 3cd34e9

Browse files
regex pattern (examplehub#179)
* pattern * fixed algorithms
1 parent c64a2d0 commit 3cd34e9

File tree

11 files changed

+199
-0
lines changed

11 files changed

+199
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.examplehub.basics.encrypt;
2+
3+
public class HashAlgoExample {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.examplehub.basics.encrypt;
2+
3+
public class MD5Example {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.examplehub.basics.encrypt;
2+
3+
public class URLEncoderExample {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.examplehub.basics.regex;
2+
3+
public class PatternExample {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.examplehub.basics.regex;
2+
3+
public class SplitReplaceExample {
4+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.examplehub.basics.encrypt;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
class HashAlgoExampleTest {
8+
@Test
9+
void testGetHash() {
10+
assertEquals(0x5e918d2, "hello".hashCode());
11+
assertEquals(0x7a9d88e8, "hello, java".hashCode());
12+
assertEquals(0xa0dbae2f, "hello, bob".hashCode());
13+
}
14+
@Test
15+
void testCollision() {
16+
assertEquals(0x7460e8c0, "AaAaAa".hashCode());
17+
assertEquals(0x7460e8c0, "BBAaBB".hashCode());
18+
}
19+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.examplehub.basics.encrypt;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.math.BigInteger;
6+
import java.nio.charset.StandardCharsets;
7+
import java.security.MessageDigest;
8+
import java.security.NoSuchAlgorithmException;
9+
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
11+
12+
class MD5ExampleTest {
13+
@Test
14+
void testMD5() throws NoSuchAlgorithmException {
15+
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
16+
messageDigest.update("Hello".getBytes(StandardCharsets.UTF_8));
17+
messageDigest.update("Word".getBytes(StandardCharsets.UTF_8));
18+
byte[] result = messageDigest.digest();
19+
assertEquals("4b6f86d49716af8d4f2edf01a309fc8", new BigInteger(1, result).toString(16));
20+
}
21+
22+
@Test
23+
void testSHA1() throws NoSuchAlgorithmException {
24+
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
25+
messageDigest.update("Hello".getBytes(StandardCharsets.UTF_8));
26+
messageDigest.update("Word".getBytes(StandardCharsets.UTF_8));
27+
byte[] result = messageDigest.digest();
28+
assertEquals("bb91fbbc79de916e68ea0b4dcb7407bad1941aaf", new BigInteger(1, result).toString(16));
29+
}
30+
31+
@Test
32+
void testSHA256() throws NoSuchAlgorithmException {
33+
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
34+
messageDigest.update("Hello".getBytes(StandardCharsets.UTF_8));
35+
messageDigest.update("Word".getBytes(StandardCharsets.UTF_8));
36+
byte[] result = messageDigest.digest();
37+
assertEquals("294a5c8e68aa0f68fa7f5309f65baf111b9b2e71b286319ca2c88ed40bb5020c", new BigInteger(1, result).toString(16));
38+
}
39+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.examplehub.basics.encrypt;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.net.URLDecoder;
6+
import java.net.URLEncoder;
7+
import java.nio.charset.StandardCharsets;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
11+
class URLEncoderExampleTest {
12+
@Test
13+
void testEncodeDecode() {
14+
String encoded = URLEncoder.encode("中 文", StandardCharsets.UTF_8);
15+
assertEquals("%E4%B8%AD+%E6%96%87", encoded);
16+
assertEquals("中 文", URLDecoder.decode(encoded, StandardCharsets.UTF_8));
17+
}
18+
}

src/test/java/com/examplehub/basics/regex/MatchesExampleTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,4 +200,15 @@ void testOr() {
200200
assertTrue("learn Java".matches(regex));
201201
assertTrue("learn Python".matches(regex));
202202
}
203+
204+
@Test
205+
void testStar() {
206+
String regex = "0*";
207+
assertTrue("".matches(regex));
208+
assertTrue("0".matches(regex));
209+
assertTrue("00".matches(regex));
210+
assertTrue("000".matches(regex));
211+
assertTrue("0000".matches(regex));
212+
assertFalse("01".matches(regex));
213+
}
203214
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.examplehub.basics.regex;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.util.regex.Matcher;
6+
import java.util.regex.Pattern;
7+
8+
import static org.junit.jupiter.api.Assertions.*;
9+
10+
class PatternExampleTest {
11+
@Test
12+
void testGroup() {
13+
Pattern pattern = Pattern.compile("(\\d{3,4})-(\\d{7,8})");
14+
Matcher matcher = pattern.matcher("010-12345678");
15+
assertTrue(matcher.matches());
16+
assertEquals("010-12345678", matcher.group(0));
17+
assertEquals("010", matcher.group(1));
18+
assertEquals("12345678", matcher.group(2));
19+
}
20+
21+
@Test
22+
void testMatcher() {
23+
Pattern pattern = Pattern.compile("(\\d{3,4})-(\\d){7,8}");
24+
assertTrue(pattern.matcher("010-12345678").matches());
25+
assertTrue(pattern.matcher("010-1234567").matches());
26+
assertTrue(pattern.matcher("0101-1234567").matches());
27+
assertTrue(pattern.matcher("0101-12345678").matches());
28+
assertFalse(pattern.matcher("010#12345678").matches());
29+
assertFalse(pattern.matcher("010-123456789").matches());
30+
31+
pattern = Pattern.compile("(\\d??)(9*)");
32+
Matcher matcher = pattern.matcher("999999999999");
33+
assertTrue(matcher.matches());
34+
assertEquals("999999999999", matcher.group(0));
35+
assertEquals("", matcher.group(1));
36+
assertEquals("999999999999", matcher.group(2));
37+
38+
pattern = Pattern.compile("(\\d?)(9*)");
39+
matcher = pattern.matcher("999999999999");
40+
assertTrue(matcher.matches());
41+
assertEquals("999999999999", matcher.group(0));
42+
assertEquals("9", matcher.group(1));
43+
assertEquals("99999999999", matcher.group(2));
44+
}
45+
46+
@Test
47+
void testGetTime() {
48+
Pattern pattern = Pattern.compile("(\\d{2}):(\\d{2}):(\\d{2})");
49+
Matcher matcher = pattern.matcher("23:01:59");
50+
assertTrue(matcher.matches());
51+
assertEquals("23:01:59", matcher.group(0));
52+
assertEquals("23", matcher.group(1));
53+
assertEquals("01", matcher.group(2));
54+
assertEquals("59", matcher.group(3));
55+
}
56+
57+
@Test
58+
void testGetZero() {
59+
Pattern pattern = Pattern.compile("(\\d+?)(0*)");
60+
Matcher matcher = pattern.matcher("1230000");
61+
assertTrue(matcher.matches());
62+
assertEquals("1230000", matcher.group(0));
63+
assertEquals("123", matcher.group(1));
64+
assertEquals("0000", matcher.group(2));
65+
}
66+
67+
@Test
68+
void testGetZeroVersion2() {
69+
Pattern pattern = Pattern.compile("([1-9]*)(0*)");
70+
Matcher matcher = pattern.matcher("1230000");
71+
assertTrue(matcher.matches());
72+
assertEquals("1230000", matcher.group(0));
73+
assertEquals("123", matcher.group(1));
74+
assertEquals("0000", matcher.group(2));
75+
}
76+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.examplehub.basics.regex;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.util.Arrays;
6+
7+
import static org.junit.jupiter.api.Assertions.*;
8+
9+
class SplitReplaceExampleTest {
10+
@Test
11+
void testSplit() {
12+
assertEquals("[a, b, c]", Arrays.toString("a b c".split("\\s")));
13+
assertEquals("[a, b, , c]", Arrays.toString("a b c".split("\\s")));
14+
assertEquals("[a, b, c]", Arrays.toString("a, b ;; c".split("[,;\\s]+")));
15+
}
16+
}

0 commit comments

Comments
 (0)