[JAVA] Collectez les codes de saut de ligne avec enum

introduction

Lors de la sortie du résultat du traitement d'un programme dans un fichier, il peut être nécessaire de spécifier un code autre que le code de saut de ligne par défaut de l'environnement d'exécution. Traitement qui spécifie avec des symboles tels que "LF" et "CRLF" dans les paramètres de ligne de commande et les fichiers de propriétés, et les affecte aux chaînes de caractères de saut de ligne "\ n" et "\ n \ r" en fonction des symboles spécifiés dans le programme reçu. J'écrivais, mais j'ai remarqué que c'était mis en place dans enum.

Implémentation enum NewLine

enum Avec la méthode par défaut valueOf (String name), il n'y a pas de nom correspondant

java.lang.IllegalArgumentException: No enum constant NewLine.XXX

Puisqu'une exception comme celle-ci est levée, j'ai préparé une méthode get (String name).

NewLine.java


public enum NewLine {
	CR("\r"),
	LF("\n"),
	CRLF("\r\n"),
	DEFAULT(System.lineSeparator());

	private final String value;
	
	private NewLine(String value) {
		this.value = value;
	}

	public String getValue() {
		return value;
	}

	static NewLine get(String name) {
		try {
			return valueOf(name);
		}
		catch (IllegalArgumentException | NullPointerException ignore) {}
		return DEFAULT;
	}
}

Exemple d'utilisation

Il s'agit d'une image qui spécifie un saut de ligne dans la propriété. Il s'agit d'un exemple qui spécifie l'une des énumérations NewLine en tant que propriété et l'utilise dans la méthode d'écriture de Writer.

NewLineTest.java


public class NewLineTest {
	
	static Properties prop;
	
	@BeforeClass
	static public void init() {
		prop = new Properties();
		prop.setProperty("newline", "LF");
	}

	@Test
	public void test() throws Exception {
		
		NewLine EOL = NewLine.get(prop.getProperty("newline"));
		
		StringWriter writer = new StringWriter();
		writer.write("line");
		writer.write(EOL.getValue());
		
		System.out.print(writer);
	}
}

Recommended Posts

Collectez les codes de saut de ligne avec enum
Convertissez le code de saut de ligne en une balise de saut de ligne html avec Thymeleaf et sortie