文字解析元件

常見拆解文字有兩種方式,為了避免修改格式造成程式修改容易建立共用元件

  • byte長度切割

  • char長度切割

class TextCutRuleslSeriveTest {
	private final String UTF8 = "utf-8";
	ITextCutRuleslSerive<List<String>> textCutRuleslSerive = new TextCutRuleslSerive<>();

	public TextCutRuleslSeriveTest() {
		textCutRuleslSerive.addRule(i -> i.startsWith("ST01"), getST01());
		textCutRuleslSerive.addRule(i -> i.startsWith("ST02"), getST02());
		textCutRuleslSerive.addRule(i -> i.startsWith("ST03"), getST03());

	}

	@Test
	public void test_give_4Line_reutrn_4Line() {

		// GIVE
		// ST011234567890,ST0212345,ST0312
		List<String> line = new ArrayList<String>();
		line.add("ST011234567890");
		line.add("ST0212345");
		line.add("ST0312");
		line.add("ST010987654321");

		// WHEN 轉換
		List<List<String>> list = textCutRuleslSerive.to(line);

		// THEN
		System.out.println(list);

		assertThat(list.get(0).get(0).endsWith("ST01"));
		assertThat(list.get(0).get(1).endsWith("1234567890"));

		assertThat(list.get(1).get(0).endsWith("ST02"));
		assertThat(list.get(1).get(1).endsWith("12345"));

		assertThat(list.get(2).get(0).endsWith("ST03"));
		assertThat(list.get(2).get(1).endsWith("12"));

		assertThat(list.get(3).get(0).endsWith("ST01"));
		assertThat(list.get(3).get(1).endsWith("0987654321"));

	}

	TextCutRoleConfig<List<String>> getST01() {
		TextCutRoleConfig<List<String>> textCutRoleConfig = new TextCutRoleConfig<>(TextCutType.BYTE, UTF8,
				line -> line.getLines());
		textCutRoleConfig.addRole(4);
		textCutRoleConfig.addRole(10);
		return textCutRoleConfig;

	}

	TextCutRoleConfig<List<String>> getST02() {
		TextCutRoleConfig<List<String>> textCutRoleConfig = new TextCutRoleConfig<>(TextCutType.BYTE, UTF8,
				line -> line.getLines());
		textCutRoleConfig.addRole(4);
		textCutRoleConfig.addRole(5);
		return textCutRoleConfig;

	}

	TextCutRoleConfig<List<String>> getST03() {
		TextCutRoleConfig<List<String>> textCutRoleConfig = new TextCutRoleConfig<>(TextCutType.BYTE, UTF8,
				line -> line.getLines());
		textCutRoleConfig.addRole(4);
		textCutRoleConfig.addRole(2);
		return textCutRoleConfig;

	}

}

Last updated

Was this helpful?