그래서 저는 유니 코드가 보통의 입력 텍스트에서 문자의 큰 무서운 보이는 혼란을 일으키기 위해 착취당하는 것을 보았습니다, 더 잘고 텍스트라고합니다. HTML (편집 : 자바 스크립트)는 wonderful job을 수행하는 것으로 보입니다. 그래서 궁금 해서요, 같은 (또는 비슷한) 자바로 할 수 있습니까? 나는 비교적 새로운 것이므로 유사한 발전기를 만드는 것이 좋은 운동이 될 것이라고 생각합니다.Java에서 Zalgo 텍스트?
4
A
답변
2
편집 방법은 java에서 수행하는 방법을 보여줍니다.
결과는 텍스트 파일 zalgo.txt에 유니 코드 형식으로 저장됩니다. IDE가 출력 스트림에 유니 코드 문자를 올바르게 표시하는 방법을 모르기 때문에 파일에 저장합니다.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
public class Zalgo {
private static final char[] zalgo_up =
{ '\u030d', /* Ì? */'\u030e', /* ÌŽ */'\u0304', /* Ì„ */'\u0305', /* Ì… */
'\u033f', /* Ì¿ */'\u0311', /* Ì‘ */'\u0306', /* ̆ */'\u0310', /* Ì? */
'\u0352', /* ͒ */'\u0357', /* ͗ */'\u0351', /* ͑ */'\u0307', /* ̇ */
'\u0308', /* ̈ */'\u030a', /* ̊ */'\u0342', /* ͂ */'\u0343', /* ̓ */
'\u0344', /* ̈Ì? */'\u034a', /* ÍŠ */'\u034b', /* Í‹ */'\u034c', /* ÍŒ */
'\u0303', /* ̃ */'\u0302', /* Ì‚ */'\u030c', /* ÌŒ */'\u0350', /* Í? */
'\u0300', /* Ì€ */'\u0301', /* Ì? */'\u030b', /* Ì‹ */'\u030f', /* Ì? */
'\u0312', /* ̒ */'\u0313', /* ̓ */'\u0314', /* ̔ */'\u033d', /* ̽ */
'\u0309', /* ̉ */'\u0363', /* ͣ */'\u0364', /* ͤ */'\u0365', /* ͥ */
'\u0366', /* ͦ */'\u0367', /* ͧ */'\u0368', /* ͨ */'\u0369', /* ͩ */
'\u036a', /* ͪ */'\u036b', /* Í« */'\u036c', /* ͬ */'\u036d', /* Í */
'\u036e', /* ͮ */'\u036f', /* ͯ */'\u033e', /* ̾ */'\u035b', /* ͛ */
'\u0346', /* ͆ */'\u031a' /* ̚ */
} ;
private static final char[] zalgo_down =
{ '\u0316', /* ̖ */'\u0317', /* ̗ */'\u0318', /* ̘ */'\u0319', /* ̙ */
'\u031c', /* Ìœ */'\u031d', /* Ì? */'\u031e', /* Ìž */'\u031f', /* ÌŸ */
'\u0320', /* Ì */'\u0324', /* ̤ */'\u0325', /* Ì¥ */'\u0326', /* ̦ */
'\u0329', /* ̩ */'\u032a', /* ̪ */'\u032b', /* ̫ */'\u032c', /* ̬ */
'\u032d', /* Ì */'\u032e', /* Ì® */'\u032f', /* ̯ */'\u0330', /* Ì° */
'\u0331', /* ̱ */'\u0332', /* ̲ */'\u0333', /* ̳ */'\u0339', /* ̹ */
'\u033a', /* ̺ */'\u033b', /* ̻ */'\u033c', /* ̼ */'\u0345', /* ͅ */
'\u0347', /* ͇ */'\u0348', /* ͈ */'\u0349', /* ͉ */'\u034d', /* Í? */
'\u034e', /* ÍŽ */'\u0353', /* Í“ */'\u0354', /* Í” */'\u0355', /* Í• */
'\u0356', /* ͖ */'\u0359', /* ͙ */'\u035a', /* ͚ */'\u0323' /* ̣ */
} ;
//those always stay in the middle
private static final char[] zalgo_mid =
{ '\u0315', /* Ì• */'\u031b', /* Ì› */'\u0340', /* Ì€ */'\u0341', /* Ì? */
'\u0358', /* ͘ */'\u0321', /* ̡ */'\u0322', /* ̢ */'\u0327', /* ̧ */
'\u0328', /* ̨ */'\u0334', /* ̴ */'\u0335', /* ̵ */'\u0336', /* ̶ */
'\u034f', /* Í? */'\u035c', /* Íœ */'\u035d', /* Í? */'\u035e', /* Íž */
'\u035f', /* ÍŸ */'\u0360', /* Í */'\u0362', /* Í¢ */'\u0338', /* ̸ */
'\u0337', /* Ì· */'\u0361', /* Í¡ */'\u0489' /* Ò‰_ */
} ;
// rand funcs
//---------------------------------------------------
//gets an int between 0 and max
private static int rand(int max) {
return (int)Math.floor(Math.random() * max);
}
//gets a random char from a zalgo char table
private static char rand_zalgo(char[] array) {
int ind = (int)Math.floor(Math.random() * array.length);
return array[ind];
}
//hide show element
//lookup char to know if its a zalgo char or not
private static boolean is_zalgo_char(char c) {
for (int i = 0; i < zalgo_up.length; i++)
if (c == zalgo_up[i])
return true;
for (int i = 0; i < zalgo_down.length; i++)
if (c == zalgo_down[i])
return true;
for (int i = 0; i < zalgo_mid.length; i++)
if (c == zalgo_mid[i])
return true;
return false;
}
public static String goZalgo(String iText, boolean zalgo_opt_mini, boolean zalgo_opt_normal, boolean up,
boolean down, boolean mid) {
String zalgoTxt = "";
for (int i = 0; i < iText.length(); i++) {
if (is_zalgo_char(iText.charAt(i)))
continue;
int num_up;
int num_mid;
int num_down;
//add the normal character
zalgoTxt += iText.charAt(i);
//options
if (zalgo_opt_mini) {
num_up = rand(8);
num_mid = rand(2);
num_down = rand(8);
} else if (zalgo_opt_normal) {
num_up = rand(16)/2 + 1;
num_mid = rand(6)/2;
num_down = rand(16)/2 + 1;
} else //maxi
{
num_up = rand(64)/4 + 3;
num_mid = rand(16)/4 + 1;
num_down = rand(64)/4 + 3;
}
if (up)
for (int j = 0; j < num_up; j++)
zalgoTxt += rand_zalgo(zalgo_up);
if (mid)
for (int j = 0; j < num_mid; j++)
zalgoTxt += rand_zalgo(zalgo_mid);
if (down)
for (int j = 0; j < num_down; j++)
zalgoTxt += rand_zalgo(zalgo_down);
}
return zalgoTxt;
}
public static void main(String[] args){
final String zalgoTxt = goZalgo("To invoke the hive-mind representing chaos.\n" +
"Invoking the feeling of chaos.\n" +
"With out order.\n" +
"The Nezperdian hive-mind of chaos. Zalgo. \n" +
"He who Waits Behind The Wall.\n" +
"ZALGO!", true, false, true, true, true);
try {
final File fileDir = new File("zalgo.txt");
final Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileDir), "UTF8"));
final String[] lines = zalgoTxt.split("\n");
for (int i = 0; i < lines.length; i++) {
String line = lines[i];
out.append(line).append("\r\n");;
}
out.flush();
out.close();
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
여기에서주의 깊게 보면 (다른 zalgo 발전기) :
http://textozor.com/zalgo-text/
당신은이 엉망 코드를 생성하기 위해 자바 스크립트를 사용하고 있음을 알 수 있습니다 http://textozor.com/zalgo-text/scriptz.js
가에 그 로직 변환을 원하는 언어.
나는 논리를 보지만, 내가 모르는 것은 Java에서 비슷한 방식으로 유니 코드 문자를 조작하는 방법이다. – Strainborm
@Strainborm 어떻게 대답하는지 편집 해주었습니다. – MihaiC
와우! 당신이 앞으로 나아가서 전체 코드를 변환 할 것이라고 생각하지 않을 것입니다 ...하지만 많이 감사합니다, 이것은 분명히 무리를 돕습니다 :) – Strainborm