fix split

This commit is contained in:
Looly
2021-09-25 18:20:12 +08:00
parent e16ec27c40
commit bebacf2d00
17 changed files with 641 additions and 230 deletions

View File

@@ -12,7 +12,13 @@ public class StrMatcherTest {
public void matcherTest(){
final StrMatcher strMatcher = new StrMatcher("${name}-${age}-${gender}-${country}-${province}-${city}-${status}");
final Map<String, String> match = strMatcher.match("小明-19-男-中国-河南-郑州-已婚");
Console.log(match);
Assert.assertEquals("小明", match.get("name"));
Assert.assertEquals("19", match.get("age"));
Assert.assertEquals("", match.get("gender"));
Assert.assertEquals("中国", match.get("country"));
Assert.assertEquals("河南", match.get("province"));
Assert.assertEquals("郑州", match.get("city"));
Assert.assertEquals("已婚", match.get("status"));
}
@Test

View File

@@ -0,0 +1,95 @@
package cn.hutool.core.text.split;
import cn.hutool.core.text.finder.CharFinder;
import cn.hutool.core.text.finder.LengthFinder;
import cn.hutool.core.text.finder.PatternFinder;
import cn.hutool.core.text.finder.StrFinder;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
import java.util.regex.Pattern;
public class SplitIterTest {
@Test
public void splitByCharTest(){
String str1 = "a, ,,efedsfs, ddf,";
//不忽略""
SplitIter splitIter = new SplitIter(str1,
new CharFinder(',', false),
Integer.MAX_VALUE,
false
);
Assert.assertEquals(6, splitIter.toList(false).size());
}
@Test
public void splitByCharIgnoreEmptyTest(){
String str1 = "a, ,,efedsfs, ddf,";
SplitIter splitIter = new SplitIter(str1,
new CharFinder(',', false),
Integer.MAX_VALUE,
true
);
final List<String> strings = splitIter.toList(false);
Assert.assertEquals(4, strings.size());
}
@Test
public void splitByStrTest(){
String str1 = "a, ,,efedsfs, ddf,";
SplitIter splitIter = new SplitIter(str1,
new StrFinder("e", false),
Integer.MAX_VALUE,
true
);
final List<String> strings = splitIter.toList(false);
Assert.assertEquals(3, strings.size());
}
@Test
public void splitByPatternTest(){
String str1 = "a, ,,efedsfs, ddf,";
SplitIter splitIter = new SplitIter(str1,
new PatternFinder(Pattern.compile("\\s")),
Integer.MAX_VALUE,
true
);
final List<String> strings = splitIter.toList(false);
Assert.assertEquals(3, strings.size());
}
@Test
public void splitByLengthTest(){
String text = "1234123412341234";
SplitIter splitIter = new SplitIter(text,
new LengthFinder(4),
Integer.MAX_VALUE,
false
);
final List<String> strings = splitIter.toList(false);
Assert.assertEquals(4, strings.size());
}
@Test
public void splitLimitTest(){
String text = "55:02:18";
SplitIter splitIter = new SplitIter(text,
new CharFinder(':'),
3,
false
);
final List<String> strings = splitIter.toList(false);
Assert.assertEquals(3, strings.size());
}
}

View File

@@ -1,11 +1,10 @@
package cn.hutool.core.lang;
import java.util.List;
package cn.hutool.core.text.split;
import cn.hutool.core.text.StrSplitter;
import org.junit.Assert;
import org.junit.Test;
import cn.hutool.core.text.StrSplitter;
import java.util.List;
/**
* {@link StrSplitter} 单元测试
@@ -18,6 +17,7 @@ public class StrSpliterTest {
public void splitByCharTest(){
String str1 = "a, ,efedsfs, ddf";
List<String> split = StrSplitter.split(str1, ',', 0, true, true);
Assert.assertEquals("ddf", split.get(2));
Assert.assertEquals(3, split.size());
}
@@ -45,4 +45,13 @@ public class StrSpliterTest {
Assert.assertEquals("bin", split.get(2));
Assert.assertEquals(3, split.size());
}
@Test
public void splitMappingTest() {
String str = "1.2.";
List<Long> split = StrSplitter.split(str, '.', 0, true, true, Long::parseLong);
Assert.assertEquals(2, split.size());
Assert.assertEquals(Long.valueOf(1L), split.get(0));
Assert.assertEquals(Long.valueOf(2L), split.get(1));
}
}

View File

@@ -81,15 +81,6 @@ public class StrUtilTest {
Assert.assertEquals("", split.get(2));
}
@Test
public void splitTest3() {
String str = "1.2.";
List<Long> split = StrUtil.split(str, '.', 0, true, true, Long::parseLong);
Assert.assertEquals(2, split.size());
Assert.assertEquals(Long.valueOf(1L), split.get(0));
Assert.assertEquals(Long.valueOf(2L), split.get(1));
}
@Test
public void splitToLongTest() {
String str = "1,2,3,4, 5";