//"abcdefghijklmnopqrstuvwxyz ',.-*/=!?’×…°\\"
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//
using System.Diagnostics;
using System.Net;
namespace 암기왕_b7._0
{
public partial class _Form_Main : Form
{
public _Form_Main()
{
InitializeComponent();
}
Dictionary<string, string> dicIrrV = new Dictionary<string, string>();
Dictionary<string, string> dicIrrN = new Dictionary<string, string>();
const string _DATAPATH = @"data\";
const string _LOGPATH = @"data\log\";
const string _DICPATH = @"data\dic\";
const string _HISTORYPATH = @"data\history\";
Random myRnd = new Random();
string _CRLF = Environment.NewLine;
string _sLogTAB = "";
DateTime _dtLogTIME = DateTime.Now;
private void _myLog(string sLog, int nLogLevel = 0, int nTabDepth = 0)
{
StackTrace stackTrace = new StackTrace();
string sParent = stackTrace.GetFrame(1).GetMethod().Name;
if (sParent.IndexOf("__") > -1)
{
sParent = sParent.Split(new[] { "__" }, StringSplitOptions.None)[1];
}
if (sParent.IndexOf("|") > -1)
{
sParent = sParent.Split(new[] { "|" }, StringSplitOptions.None)[0];
}
sParent += "()";
if (nTabDepth == -1)
{
_sLogTAB = _sLogTAB.Substring(1);
}
string sElsped =
(DateTime.Now - _dtLogTIME).TotalSeconds.ToString("N3");
//(DateTime.Now - _dtLogTIME).TotalSeconds.ToString("N3").PadLeft(7);
if (System.Convert.ToDouble(sElsped) > 60.0)
{
sElsped = "> 1min.";
}
string sLine =
DateTime.Now.ToString(
"yyyy-MM-dd HH:mm:ss.fff") + "\t" +
sElsped + "\t" +
nLogLevel + "\t" +
_sLogTAB +
sParent + "\t" +
sLog +
_CRLF;
string sLine4Strip =
//DateTime.Now.ToString("HH:mm:ss") + " " +
"[" + sElsped + "초 " +
(_toolStripProgressBar_Main.Value) + "/" + _toolStripProgressBar_Main.Maximum + "] " +
//((sParent.Length > 20) ?
//sParent.Substring(0,19) + "…" : sParent.PadRight(10)) +" " +
sLog;
_dtLogTIME = DateTime.Now;
if (sLine4Strip.IndexOf("완료") > -1)
{
_toolStripStatusLabel_Log.Text = sLine4Strip;
}
if (!System.IO.File.Exists(
_LOGPATH + DateTime.Now.ToString("yyyy-MM-dd") + "_log.txt"))
{
try
{
System.IO.File.AppendAllText(
_LOGPATH +
DateTime.Now.ToString("yyyy-MM-dd") + "_log.txt",
"날짜\t소요시간\t레벨\t내용" + _CRLF + sLine,
Encoding.UTF8);
}
catch (Exception)
{
//최초 실행시, 에러 날 수 있음.
}
}
else
{
System.IO.File.AppendAllText(
_LOGPATH +
DateTime.Now.ToString("yyyy-MM-dd") + "_log.txt",
sLine,
Encoding.UTF8);
}
if (nTabDepth == +1) { _sLogTAB += "\t"; }
}
private void _toolStripStatusLabel_Log_Click(object sender, EventArgs e)
{
Process.Start(@"log");
}
private void _myBulkIntroReset()
{
_textBox_Bulk.ForeColor = SystemColors.GrayText;
_textBox_Bulk.Clear();
_textBox_Bulk.AppendText(
"" + _CRLF +
"이곳에, 사전 정보를 얻어올 단어 및 숙어를 써주세요." + _CRLF +
"" + _CRLF +
"한줄에 한 단어 및 숙어를 써주세요." + _CRLF +
"" + _CRLF +
"클립 보드에서 붙혀 넣기도 가능 합니다. (ctrl + C / ctrl + V)" + _CRLF +
"" + _CRLF +
"영어 알파벳, 공백, 마침표만 검색 가능 합니다." + _CRLF +
"");
}
private void _textBox_Bulk_Enter(object sender, EventArgs e)
{
if (_textBox_Bulk.Text.IndexOf("이곳에,") > -1)
{
_textBox_Bulk.Clear();
_textBox_Bulk.ForeColor = SystemColors.WindowText;
}
}
private void _textBox_Bulk_Leave(object sender, EventArgs e)
{
if (_textBox_Bulk.Text.Trim().Length == 0)
{
_myBulkIntroReset();
}
}
private void _Form_Main_Load(object sender, EventArgs e)
{
void _myInit()
{
//https://www.englishpage.com/irregularverbs/irregularverbs.html
//http://www.esldesk.com/vocabulary/irregular-nouns
//https://en.wikipedia.org/wiki/Contraction_(grammar)#English
//dicIrrV["be"] = "was|were|been";
//dicIrrV["am"] = "were|been";
//dicIrrV["is"] = "was|been";
//dicIrrV["are"] = "were|been";
//dicIrrV["will"] = "would";
//dicIrrV["may"] = "might";
//dicIrrV["must"] = "had to";
//dicIrrV["have"] = "had|had";
//dicIrrV["can"] = "could";
//dicIrrV["shall"] = "should";
//dicIrrV["arise"] = "arose|arisen";
//dicIrrV["awake"] = "awakened|awoke|awakened|awoken";
//dicIrrV["backslide"] = "backslid|backslidden|backslid";
//dicIrrV["bear"] = "bore|born|borne";
//dicIrrV["beat"] = "beat|beaten|beat";
//dicIrrV["become"] = "became|become";
//dicIrrV["begin"] = "began|begun";
//dicIrrV["bend"] = "bent|bent";
//dicIrrV["bet"] = "bet|betted|bet|betted";
//dicIrrV["bid"] = "bid|bade|bidden|bid|bid";
//dicIrrV["bind"] = "bound|bound";
//dicIrrV["bite"] = "bit|bitten";
//dicIrrV["bleed"] = "bled|bled";
//dicIrrV["blow"] = "blew|blown";
//dicIrrV["break"] = "broke|broken";
//dicIrrV["breed"] = "bred|bred";
//dicIrrV["bring"] = "brought|brought";
//dicIrrV["broadcast"] = "broadcast|broadcasted|broadcast|broadcasted";
//dicIrrV["browbeat"] = "browbeat|browbeaten|browbeat";
//dicIrrV["build"] = "built|built";
//dicIrrV["burn"] = "burned|burnt|burned|burnt";
//dicIrrV["burst"] = "burst|burst";
//dicIrrV["bust"] = "busted|bust|busted|bust";
//dicIrrV["buy"] = "bought|bought";
//dicIrrV["cast"] = "cast|cast";
//dicIrrV["catch"] = "caught|caught";
//dicIrrV["choose"] = "chose|chosen";
//dicIrrV["cling"] = "clung|clung";
//dicIrrV["clothe"] = "clothed|clad|clothed|clad";
//dicIrrV["come"] = "came|come";
//dicIrrV["cost"] = "cost|cost";
//dicIrrV["creep"] = "crept|crept";
//dicIrrV["crossbreed"] = "crossbred|crossbred";
//dicIrrV["cut"] = "cut|cut";
//dicIrrV["daydream"] = "daydreamed|daydreamt|daydreamed|daydreamt";
//dicIrrV["deal"] = "dealt|dealt";
//dicIrrV["dig"] = "dug|dug";
//dicIrrV["disprove"] = "disproved|disproved|disproven";
//dicIrrV["dive"] = "dove|dived|dived|dived|dove|dived";
//dicIrrV["do"] = "did|done";
//dicIrrV["draw"] = "drew|drawn";
//dicIrrV["dream"] = "dreamed|dreamt|dreamed|dreamt";
//dicIrrV["drink"] = "drank|drunk";
//dicIrrV["drive"] = "drove|driven";
//dicIrrV["dwell"] = "dwelt|dwelled|dwelt|dwelled";
//dicIrrV["eat"] = "ate|eaten";
//dicIrrV["fall"] = "fell|fallen";
//dicIrrV["feed"] = "fed|fed";
//dicIrrV["feel"] = "felt|felt";
//dicIrrV["fight"] = "fought|fought";
//dicIrrV["find"] = "found|found";
//dicIrrV["fit"] = "fitted|fit|fitted|fit|fit|fitted|fit|fitted";
//dicIrrV["flee"] = "fled|fled";
//dicIrrV["fling"] = "flung|flung";
//dicIrrV["fly"] = "flew|flown";
//dicIrrV["forbid"] = "forbade|forbidden";
//dicIrrV["forecast"] = "forecast|forecast";
//dicIrrV["forego"] = "forewent|foregone";
//dicIrrV["forgo"] = "forewent|foregone";
//dicIrrV["foresee"] = "foresaw|foreseen";
//dicIrrV["foretell"] = "foretold|foretold";
//dicIrrV["forget"] = "forgot|forgotten|forgot";
//dicIrrV["forgive"] = "forgave|forgiven";
//dicIrrV["forsake"] = "forsook|forsaken";
//dicIrrV["freeze"] = "froze|frozen";
//dicIrrV["frostbite"] = "frostbit|frostbitten";
//dicIrrV["get"] = "got|gotten|got";
//dicIrrV["give"] = "gave|given";
//dicIrrV["go"] = "went|gone";
//dicIrrV["grind"] = "ground|ground";
//dicIrrV["grow"] = "grew|grown";
//dicIrrV["hand-feed"] = "hand-fed|hand-fed";
//dicIrrV["handwrite"] = "handwrote|handwritten";
//dicIrrV["hang"] = "hung|hung";
//dicIrrV["hear"] = "heard|heard";
//dicIrrV["hew"] = "hewed|hewn|hewed";
//dicIrrV["hide"] = "hid|hidden";
//dicIrrV["hit"] = "hit|hit";
//dicIrrV["hold"] = "held|held";
//dicIrrV["hurt"] = "hurt|hurt";
//dicIrrV["inbreed"] = "inbred|inbred";
//dicIrrV["inlay"] = "inlaid|inlaid";
//dicIrrV["input"] = "input|inputted|input|inputted";
//dicIrrV["interbreed"] = "interbred|interbred";
//dicIrrV["interweave"] = "interwove|interweaved|interwoven|interweaved";
//dicIrrV["interwind"] = "interwound|interwound";
//dicIrrV["jerry-build"] = "jerry-built|jerry-built";
//dicIrrV["keep"] = "kept|kept";
//dicIrrV["kneel"] = "knelt|kneeled|knelt|kneeled";
//dicIrrV["knit"] = "knitted|knit|knitted|knit";
//dicIrrV["know"] = "knew|known";
//dicIrrV["lay"] = "laid|laid";
//dicIrrV["lead"] = "led|led";
//dicIrrV["lean"] = "leaned|leant|leaned|leant";
//dicIrrV["leap"] = "leaped|leapt|leaped|leapt";
//dicIrrV["learn"] = "learned|learnt|learned|learnt";
//dicIrrV["leave"] = "left|left";
//dicIrrV["lend"] = "lent|lent";
//dicIrrV["let"] = "let|let";
//dicIrrV["lie"] = "lay|lain|lied|lied";
//dicIrrV["light"] = "lit|lighted|lit|lighted";
//dicIrrV["lip-read"] = "lip-read|lip-read";
//dicIrrV["lose"] = "lost|lost";
//dicIrrV["make"] = "made|made";
//dicIrrV["mean"] = "meant|meant";
//dicIrrV["meet"] = "met|met";
//dicIrrV["miscast"] = "miscast|miscast";
//dicIrrV["misdeal"] = "misdealt|misdealt";
//dicIrrV["misdo"] = "misdid|misdone";
//dicIrrV["mishear"] = "misheard|misheard";
//dicIrrV["mislay"] = "mislaid|mislaid";
//dicIrrV["mislead"] = "misled|misled";
//dicIrrV["mislearn"] = "mislearned|mislearnt|mislearned|mislearnt";
//dicIrrV["misread"] = "misread|misread";
//dicIrrV["misset"] = "misset|misset";
//dicIrrV["misspeak"] = "misspoke|misspoken";
//dicIrrV["misspell"] = "misspelled|misspelt|misspelled|misspelt";
//dicIrrV["misspend"] = "misspent|misspent";
//dicIrrV["mistake"] = "mistook|mistaken";
//dicIrrV["misteach"] = "mistaught|mistaught";
//dicIrrV["misunderstand"] = "misunderstood|misunderstood";
//dicIrrV["miswrite"] = "miswrote|miswritten";
//dicIrrV["mow"] = "mowed|mowed|mown";
//dicIrrV["offset"] = "offset|offset";
//dicIrrV["outbid"] = "outbid|outbid";
//dicIrrV["outbreed"] = "outbred|outbred";
//dicIrrV["outdo"] = "outdid|outdone";
//dicIrrV["outdraw"] = "outdrew|outdrawn";
//dicIrrV["outdrink"] = "outdrank|outdrunk";
//dicIrrV["outdrive"] = "outdrove|outdriven";
//dicIrrV["outfight"] = "outfought|outfought";
//dicIrrV["outfly"] = "outflew|outflown";
//dicIrrV["outgrow"] = "outgrew|outgrown";
//dicIrrV["outleap"] = "outleaped|outleapt|outleaped|outleapt";
//dicIrrV["outlie"] = "outlied|outlied";
//dicIrrV["outride"] = "outrode|outridden";
//dicIrrV["outrun"] = "outran|outrun";
//dicIrrV["outsell"] = "outsold|outsold";
//dicIrrV["outshine"] = "outshined|outshone|outshined|outshone";
//dicIrrV["outshoot"] = "outshot|outshot";
//dicIrrV["outsing"] = "outsang|outsung";
//dicIrrV["outsit"] = "outsat|outsat";
//dicIrrV["outsleep"] = "outslept|outslept";
//dicIrrV["outsmell"] = "outsmelled|outsmelt|outsmelled|outsmelt";
//dicIrrV["outspeak"] = "outspoke|outspoken";
//dicIrrV["outspeed"] = "outsped|outsped";
//dicIrrV["outspend"] = "outspent|outspent";
//dicIrrV["outswear"] = "outswore|outsworn";
//dicIrrV["outswim"] = "outswam|outswum";
//dicIrrV["outthink"] = "outthought|outthought";
//dicIrrV["outthrow"] = "outthrew|outthrown";
//dicIrrV["outwrite"] = "outwrote|outwritten";
//dicIrrV["overbid"] = "overbid|overbid";
//dicIrrV["overbreed"] = "overbred|overbred";
//dicIrrV["overbuild"] = "overbuilt|overbuilt";
//dicIrrV["overbuy"] = "overbought|overbought";
//dicIrrV["overcome"] = "overcame|overcome";
//dicIrrV["overdo"] = "overdid|overdone";
//dicIrrV["overdraw"] = "overdrew|overdrawn";
//dicIrrV["overdrink"] = "overdrank|overdrunk";
//dicIrrV["overeat"] = "overate|overeaten";
//dicIrrV["overfeed"] = "overfed|overfed";
//dicIrrV["overhang"] = "overhung|overhung";
//dicIrrV["overhear"] = "overheard|overheard";
//dicIrrV["overlay"] = "overlaid|overlaid";
//dicIrrV["overpay"] = "overpaid|overpaid";
//dicIrrV["override"] = "overrode|overridden";
//dicIrrV["overrun"] = "overran|overrun";
//dicIrrV["oversee"] = "oversaw|overseen";
//dicIrrV["oversell"] = "oversold|oversold";
//dicIrrV["oversew"] = "oversewed|oversewn|oversewed";
//dicIrrV["overshoot"] = "overshot|overshot";
//dicIrrV["oversleep"] = "overslept|overslept";
//dicIrrV["overspeak"] = "overspoke|overspoken";
//dicIrrV["overspend"] = "overspent|overspent";
//dicIrrV["overspill"] = "overspilled|overspilt|overspilled|overspilt";
//dicIrrV["overtake"] = "overtook|overtaken";
//dicIrrV["overthink"] = "overthought|overthought";
//dicIrrV["overthrow"] = "overthrew|overthrown";
//dicIrrV["overwind"] = "overwound|overwound";
//dicIrrV["overwrite"] = "overwrote|overwritten";
//dicIrrV["partake"] = "partook|partaken";
//dicIrrV["pay"] = "paid|paid";
//dicIrrV["plead"] = "pleaded|pled|pleaded|pled";
//dicIrrV["prebuild"] = "prebuilt|prebuilt";
//dicIrrV["predo"] = "predid|predone";
//dicIrrV["premake"] = "premade|premade";
//dicIrrV["prepay"] = "prepaid|prepaid";
//dicIrrV["presell"] = "presold|presold";
//dicIrrV["preset"] = "preset|preset";
//dicIrrV["preshrink"] = "preshrank|preshrunk";
//dicIrrV["proofread"] = "proofread|proofread";
//dicIrrV["prove"] = "proved|proven|proved";
//dicIrrV["put"] = "put|put";
//dicIrrV["quick-freeze"] = "quick-froze|quick-frozen";
//dicIrrV["quit"] = "quit|quitted|quit|quitted";
//dicIrrV["read"] = "read|read";
//dicIrrV["reawake"] = "reawoke|reawaken";
//dicIrrV["rebid"] = "rebid|rebid";
//dicIrrV["rebind"] = "rebound|rebound";
//dicIrrV["rebroadcast"] = "rebroadcast|rebroadcasted|rebroadcast|rebroadcasted";
//dicIrrV["rebuild"] = "rebuilt|rebuilt";
//dicIrrV["recast"] = "recast|recast";
//dicIrrV["recut"] = "recut|recut";
//dicIrrV["redeal"] = "redealt|redealt";
//dicIrrV["redo"] = "redid|redone";
//dicIrrV["redraw"] = "redrew|redrawn";
//dicIrrV["refit"] = "refit|refitted|refit|refitted|refitted|refit|refitted|refit";
//dicIrrV["regrind"] = "reground|reground";
//dicIrrV["regrow"] = "regrew|regrown";
//dicIrrV["rehang"] = "rehung|rehung";
//dicIrrV["rehear"] = "reheard|reheard";
//dicIrrV["reknit"] = "reknitted|reknit|reknitted|reknit";
//dicIrrV["relay"] = "relaid|relaid|relayed|relayed";
//dicIrrV["relearn"] = "relearned|relearnt|relearned|relearnt";
//dicIrrV["relight"] = "relit|relighted|relit|relighted";
//dicIrrV["remake"] = "remade|remade";
//dicIrrV["repay"] = "repaid|repaid";
//dicIrrV["reread"] = "reread|reread";
//dicIrrV["rerun"] = "reran|rerun";
//dicIrrV["resell"] = "resold|resold";
//dicIrrV["resend"] = "resent|resent";
//dicIrrV["reset"] = "reset|reset";
//dicIrrV["resew"] = "resewed|resewn|resewed";
//dicIrrV["retake"] = "retook|retaken";
//dicIrrV["reteach"] = "retaught|retaught";
//dicIrrV["retear"] = "retore|retorn";
//dicIrrV["retell"] = "retold|retold";
//dicIrrV["rethink"] = "rethought|rethought";
//dicIrrV["retread"] = "retread|retread";
//dicIrrV["retrofit"] = "retrofitted|retrofit|retrofitted|retrofit";
//dicIrrV["rewake"] = "rewoke|rewaked|rewaken|rewaked";
//dicIrrV["rewear"] = "rewore|reworn";
//dicIrrV["reweave"] = "rewove|reweaved|rewoven|reweaved";
//dicIrrV["rewed"] = "rewed|rewedded|rewed|rewedded";
//dicIrrV["rewet"] = "rewet|rewetted|rewet|rewetted";
//dicIrrV["rewin"] = "rewon|rewon";
//dicIrrV["rewind"] = "rewound|rewound";
//dicIrrV["rewrite"] = "rewrote|rewritten";
//dicIrrV["rid"] = "rid|rid";
//dicIrrV["ride"] = "rode|ridden";
//dicIrrV["ring"] = "rang|rung";
//dicIrrV["rise"] = "rose|risen";
//dicIrrV["roughcast"] = "roughcast|roughcast";
//dicIrrV["run"] = "ran|run";
//dicIrrV["sand-cast"] = "sand-cast|sand-cast";
//dicIrrV["saw"] = "sawed|sawed|sawn";
//dicIrrV["say"] = "said|said";
//dicIrrV["see"] = "saw|seen";
//dicIrrV["seek"] = "sought|sought";
//dicIrrV["sell"] = "sold|sold";
//dicIrrV["send"] = "sent|sent";
//dicIrrV["set"] = "set|set";
//dicIrrV["sew"] = "sewed|sewn|sewed";
//dicIrrV["shake"] = "shook|shaken";
//dicIrrV["shave"] = "shaved|shaved|shaven";
//dicIrrV["shear"] = "sheared|sheared|shorn";
//dicIrrV["shed"] = "shed|shed";
//dicIrrV["shine"] = "shined|shone|shined|shone";
//dicIrrV["shit"] = "shit|shat|shitted|shit/ shat|shitted";
//dicIrrV["shoot"] = "shot|shot";
//dicIrrV["show"] = "showed|shown|showed";
//dicIrrV["shrink"] = "shrank|shrunk|shrunk";
//dicIrrV["shut"] = "shut|shut";
//dicIrrV["sight-read"] = "sight-read|sight-read";
//dicIrrV["sing"] = "sang|sung";
//dicIrrV["sink"] = "sank|sunk|sunk";
//dicIrrV["sit"] = "sat|sat";
//dicIrrV["slay"] = "slew|slayed|slain|slayed|slayed|slayed";
//dicIrrV["sleep"] = "slept|slept";
//dicIrrV["slide"] = "slid|slid";
//dicIrrV["sling"] = "slung|slung";
//dicIrrV["slink"] = "slinked|slunk|slinked|slunk";
//dicIrrV["slit"] = "slit|slit";
//dicIrrV["smell"] = "smelled|smelt|smelled|smelt";
//dicIrrV["sneak"] = "sneaked|snuck|sneaked|snuck";
//dicIrrV["sow"] = "sowed|sown|sowed";
//dicIrrV["speak"] = "spoke|spoken";
//dicIrrV["speed"] = "sped|speeded|sped|speeded";
//dicIrrV["spell"] = "spelled|spelt|spelled|spelt";
//dicIrrV["spend"] = "spent|spent";
//dicIrrV["spill"] = "spilled|spilt|spilled|spilt";
//dicIrrV["spin"] = "spun|spun";
//dicIrrV["spit"] = "spit|spat|spit|spat";
//dicIrrV["split"] = "split|split";
//dicIrrV["spoil"] = "spoiled|spoilt|spoiled|spoilt";
//dicIrrV["spoon-feed"] = "spoon-fed|spoon-fed";
//dicIrrV["spread"] = "spread|spread";
//dicIrrV["spring"] = "sprang|sprung|sprung";
//dicIrrV["stand"] = "stood|stood";
//dicIrrV["steal"] = "stole|stolen";
//dicIrrV["stick"] = "stuck|stuck";
//dicIrrV["sting"] = "stung|stung";
//dicIrrV["stink"] = "stunk|stank|stunk";
//dicIrrV["strew"] = "strewed|strewn|strewed";
//dicIrrV["stride"] = "strode|stridden";
//dicIrrV["strike"] = "struck|stricken|struck|struck|stricken";
//dicIrrV["string"] = "strung|strung";
//dicIrrV["strive"] = "strove|strived|striven|strived";
//dicIrrV["sublet"] = "sublet|sublet";
//dicIrrV["sunburn"] = "sunburned|sunburnt|sunburned|sunburnt";
//dicIrrV["swear"] = "swore|sworn";
//dicIrrV["sweat"] = "sweat|sweated|sweat|sweated";
//dicIrrV["sweep"] = "swept|swept";
//dicIrrV["swell"] = "swelled|swollen|swelled";
//dicIrrV["swim"] = "swam|swum";
//dicIrrV["swing"] = "swung|swung";
//dicIrrV["take"] = "took|taken";
//dicIrrV["teach"] = "taught|taught";
//dicIrrV["tear"] = "tore|torn";
//dicIrrV["telecast"] = "telecast|telecast";
//dicIrrV["tell"] = "told|told";
//dicIrrV["test-drive"] = "test-drove|test-driven";
//dicIrrV["test-fly"] = "test-flew|test-flown";
//dicIrrV["think"] = "thought|thought";
//dicIrrV["throw"] = "threw|thrown";
//dicIrrV["thrust"] = "thrust|thrust";
//dicIrrV["tread"] = "trod|trodden|trod";
//dicIrrV["typecast"] = "typecast|typecast";
//dicIrrV["typeset"] = "typeset|typeset";
//dicIrrV["typewrite"] = "typewrote|typewritten";
//dicIrrV["unbend"] = "unbent|unbent";
//dicIrrV["unbind"] = "unbound|unbound";
//dicIrrV["unclothe"] = "unclothed|unclad|unclothed|unclad";
//dicIrrV["underbid"] = "underbid|underbid";
//dicIrrV["undercut"] = "undercut|undercut";
//dicIrrV["underfeed"] = "underfed|underfed";
//dicIrrV["undergo"] = "underwent|undergone";
//dicIrrV["underlie"] = "underlay|underlain";
//dicIrrV["undersell"] = "undersold|undersold";
//dicIrrV["underspend"] = "underspent|underspent";
//dicIrrV["understand"] = "understood|understood";
//dicIrrV["undertake"] = "undertook|undertaken";
//dicIrrV["underwrite"] = "underwrote|underwritten";
//dicIrrV["undo"] = "undid|undone";
//dicIrrV["unfreeze"] = "unfroze|unfrozen";
//dicIrrV["unhang"] = "unhung|unhung";
//dicIrrV["unhide"] = "unhid|unhidden";
//dicIrrV["unknit"] = "unknitted|unknit|unknitted|unknit";
//dicIrrV["unlearn"] = "unlearned|unlearnt|unlearned|unlearnt";
//dicIrrV["unsew"] = "unsewed|unsewn|unsewed";
//dicIrrV["unsling"] = "unslung|unslung";
//dicIrrV["unspin"] = "unspun|unspun";
//dicIrrV["unstick"] = "unstuck|unstuck";
//dicIrrV["unstring"] = "unstrung|unstrung";
//dicIrrV["unweave"] = "unwove|unweaved|unwoven|unweaved";
//dicIrrV["unwind"] = "unwound|unwound";
//dicIrrV["uphold"] = "upheld|upheld";
//dicIrrV["upset"] = "upset|upset";
//dicIrrV["wake"] = "woke|waked|woken|waked";
//dicIrrV["waylay"] = "waylaid|waylaid";
//dicIrrV["wear"] = "wore|worn";
//dicIrrV["weave"] = "wove|weaved|woven|weaved";
//dicIrrV["wed"] = "wed|wedded|wed|wedded";
//dicIrrV["weep"] = "wept|wept";
//dicIrrV["wet"] = "wet|wetted|wet|wetted";
//dicIrrV["whet"] = "whetted|whetted";
//dicIrrV["win"] = "won|won";
//dicIrrV["wind"] = "wound|wound";
//dicIrrV["withdraw"] = "withdrew|withdrawn";
//dicIrrV["withhold"] = "withheld|withheld";
//dicIrrV["withstand"] = "withstood|withstood";
//dicIrrV["wring"] = "wrung|wrung";
//dicIrrV["write"] = "wrote|written";
//dicIrrN["addendum"] = "addenda";
//dicIrrN["alga"] = "algae";
//dicIrrN["alumna"] = "alumnae";
//dicIrrN["alumnus"] = "alumni";
//dicIrrN["analysis"] = "analyses";
//dicIrrN["antenna"] = "antennas|antennae";
//dicIrrN["apparatus"] = "apparatuses";
//dicIrrN["appendix"] = "appendices|appendixes";
//dicIrrN["axis"] = "axes";
//dicIrrN["bacillus"] = "bacilli";
//dicIrrN["bacterium"] = "bacteria";
//dicIrrN["basis"] = "bases";
//dicIrrN["beau"] = "beaux";
//dicIrrN["bison"] = "bison";
//dicIrrN["buffalo"] = "buffalos|buffaloes";
//dicIrrN["bureau"] = "bureaus";
//dicIrrN["bus"] = "busses|buses";
//dicIrrN["cactus"] = "cactuses|cacti";
//dicIrrN["calf"] = "calves";
//dicIrrN["child"] = "children";
//dicIrrN["corps"] = "corps";
//dicIrrN["corpus"] = "corpora|corpuses";
//dicIrrN["crisis"] = "crises";
//dicIrrN["criterion"] = "criteria";
//dicIrrN["curriculum"] = "curricula";
//dicIrrN["datum"] = "data";
//dicIrrN["deer"] = "deer";
//dicIrrN["diagnosis"] = "diagnoses";
//dicIrrN["die"] = "dice";
//dicIrrN["dwarf"] = "dwarfs|dwarves";
//dicIrrN["echo"] = "echoes";
//dicIrrN["elf"] = "elves";
//dicIrrN["ellipsis"] = "ellipses";
//dicIrrN["embargo"] = "embargoes";
//dicIrrN["emphasis"] = "emphases";
//dicIrrN["erratum"] = "errata";
//dicIrrN["fireman"] = "firemen";
//dicIrrN["fish"] = "fish|fishes";
//dicIrrN["focus"] = "focuses";
//dicIrrN["foot"] = "feet";
//dicIrrN["formula"] = "formulas";
//dicIrrN["fungus"] = "fungi|funguses";
//dicIrrN["genus"] = "genera";
//dicIrrN["goose"] = "geese";
//dicIrrN["half"] = "halves";
//dicIrrN["hero"] = "heroes";
//dicIrrN["hippopotamus"] = "hippopotami|hippopotamuses";
//dicIrrN["hoof"] = "hoofs|hooves";
//dicIrrN["hypothesis"] = "hypotheses";
//dicIrrN["index"] = "indices|indexes";
//dicIrrN["knife"] = "knives";
//dicIrrN["leaf"] = "leaves";
//dicIrrN["life"] = "lives";
//dicIrrN["loaf"] = "loaves";
//dicIrrN["louse"] = "lice";
//dicIrrN["man"] = "men";
//dicIrrN["matrix"] = "matrices";
//dicIrrN["means"] = "means";
//dicIrrN["medium"] = "media";
//dicIrrN["memorandum"] = "memoranda";
//dicIrrN["millennium"] = "millenniums|milennia";
//dicIrrN["moose"] = "moose";
//dicIrrN["mosquito"] = "mosquitoes";
//dicIrrN["mouse"] = "mice";
//dicIrrN["nebula"] = "nebulae|nebulas";
//dicIrrN["neurosis"] = "neuroses";
//dicIrrN["nucleus"] = "nuclei";
//dicIrrN["oasis"] = "oases";
//dicIrrN["octopus"] = "octopi|octopuses";
//dicIrrN["ovum"] = "ova";
//dicIrrN["ox"] = "oxen";
//dicIrrN["paralysis"] = "paralyses";
//dicIrrN["parenthesis"] = "parentheses";
//dicIrrN["person"] = "people";
//dicIrrN["phenomenon"] = "phenomena";
//dicIrrN["potato"] = "potatoes";
//dicIrrN["radius"] = "radii|radiuses";
//dicIrrN["scarf"] = "scarfs|scarves";
//dicIrrN["scissors"] = "scissors";
//dicIrrN["self"] = "selves";
//dicIrrN["series"] = "series";
//dicIrrN["sheep"] = "sheep";
//dicIrrN["shelf"] = "shelves";
//dicIrrN["species"] = "species";
//dicIrrN["stimulus"] = "stimuli";
//dicIrrN["stratum"] = "strata";
//dicIrrN["syllabus"] = "syllabi|syllabuses";
//dicIrrN["symposium"] = "symposia|symposiums";
//dicIrrN["synopsis"] = "synopses";
//dicIrrN["synthesis"] = "syntheses";
//dicIrrN["tableau"] = "tableaux";
//dicIrrN["that"] = "those";
//dicIrrN["thesis"] = "theses";
//dicIrrN["thief"] = "thieves";
//dicIrrN["this"] = "these";
//dicIrrN["tomato"] = "tomatoes";
//dicIrrN["tooth"] = "teeth";
//dicIrrN["torpedo"] = "torpedoes";
//dicIrrN["vertebra"] = "vertebrae";
//dicIrrN["veto"] = "vetoes";
//dicIrrN["vita"] = "vitae";
//dicIrrN["watch"] = "watches";
//dicIrrN["wife"] = "wives";
//dicIrrN["wolf"] = "wolves";
//dicIrrN["woman"] = "women";
//dicIrrN["zero"] = "zeros|zeroes";
System.IO.Directory.CreateDirectory(_DATAPATH);
System.IO.Directory.CreateDirectory(_LOGPATH);
string[] asFiles =
System.IO.Directory.GetFiles(_LOGPATH, "*_log.txt");
List<string> lstFiles = asFiles.ToList();
lstFiles.Reverse();
while (lstFiles.Count >= 10)
{
System.IO.File.Delete(lstFiles[lstFiles.Count - 1]);
lstFiles.RemoveAt(lstFiles.Count - 1);
}
System.IO.Directory.CreateDirectory(_DICPATH);
//System.IO.Directory.CreateDirectory(_HISTORYPATH + "입력일자");
//System.IO.Directory.CreateDirectory(_HISTORYPATH + "최종시험일자");
System.IO.Directory.CreateDirectory(_HISTORYPATH + "최근시험결과");
System.IO.Directory.CreateDirectory(_HISTORYPATH + "난이도");
System.IO.Directory.CreateDirectory(_HISTORYPATH + "중요도");
System.IO.Directory.CreateDirectory(_HISTORYPATH + "태그");
//System.IO.Directory.CreateDirectory(_HISTORYPATH + "시험횟수");
//System.IO.Directory.CreateDirectory(_HISTORYPATH + "맞은횟수");
//System.IO.Directory.CreateDirectory(_HISTORYPATH + "틀린횟수");
_myBulkIntroReset();
}
{
_myInit();
}
}
private void _Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
}
private void _myStartBulkGetDic()
{
bool _myCheckFileName(string sWord)
{
bool lValid =
!string.IsNullOrWhiteSpace(sWord) &&
sWord.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) < 0 &&
!System.IO.Path.GetFullPath(sWord).StartsWith(@"\\.\");
foreach (char cTmp in sWord)
{
if ("abcdefghijklmnopqrstuvwxyz .".IndexOf(cTmp) == -1)
{
lValid = false;
break;
}
}
return lValid;
}
bool _myCheckWordExists(string sWord)
{
string sRootFileName =
_DICPATH +
sWord[0] + @"\" +
sWord + @"\" +
sWord + "__";
return System.IO.File.Exists(sRootFileName + "반의어.txt");
//bool lExists = false;
//System.IO.File.Exists(sRootFileName + "반의어정보.txt");
//string[] asLines = System.IO.File.ReadAllLines(_DICPATH + "대표정보.txt",Encoding.UTF8);
//foreach (string sLine in asLines)
//{
// if (sLine.Split('\t')[0].Equals(sWord))
// {
// lExists = true;
// break;
// }
//}
//return lExists;
}
void _myGetDic(string sWord)
{
string sFrontPageHtml = "";
string sThesaurusHtml = "";
string s검색어 = sWord;
string s용법 = "";
// . / ( ) ⇄
string s대표품사 = "";
string s대표뜻 = "";
string s대표유의어 = "";
string s대표반의어 = "";
string s대표참조어 = "";
string s대표상호참조어 = "";
string s발음기호 = "";
string s중요도 = "";
string s난이도 = "";
string s복수형 = "";
string s비교급 = "";
string s최상급 = "";
string s과거형 = "";
string s과거분사형 = "";
string s현재분사형 = "";
string s3인칭단수현재형 = "";
string s파생어 = "";
string s정답후보 = "";
string s유의어목록 = "";
string s반의어목록 = "";
string s뜻과예문목록 = "";
string _mySplitJoin(string sResult, string s2Add)
{
sResult = sResult + "|" + s2Add.Replace(" ", "").Replace(",", "");
sResult = string.Join("|", sResult.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries).Distinct());
if (sResult[0] == '|') { sResult = sResult.Substring(1, sResult.Length - 2); }
if (sResult[sResult.Length - 1] == '|') { sResult = sResult.Substring(0, sResult.Length - 2); }
return sResult.Trim().ToLower();
}
string _myGetHtml(string sUrl)
{
using (WebClient wcClient = new WebClient())
{
return
Encoding.UTF8.GetString(wcClient.DownloadData(new Uri(sUrl)));
}
}
string _myGetRealHtml()
{
string _myGetEntryUrl()
{
string sUrl =
"https://endic.naver.com/search.nhn?sLn=kr&searchOption=thesaurus&query=" +
sWord;
sThesaurusHtml = _myGetHtml(sUrl);
sUrl =
"https://endic.naver.com/search.nhn?sLn=kr&isOnlyViewEE=N&query=" +
sWord;
sFrontPageHtml = _myGetHtml(sUrl);
if (sFrontPageHtml.Length == 0)
{
return "";
}
string sSplit = "";
int nWordPos = sFrontPageHtml.IndexOf("/enkrEntry.nhn?entryId=");
if (nWordPos == -1) { nWordPos = int.MaxValue; }
int nIdiomPos = sFrontPageHtml.IndexOf("/enkrIdiom.nhn?idiomId=");
if (nIdiomPos == -1) { nIdiomPos = int.MaxValue; }
if (nIdiomPos < nWordPos)
{
sSplit = "/enkrIdiom.nhn?idiomId=";
}
else if (nIdiomPos > nWordPos)
{
sSplit = "/enkrEntry.nhn?entryId=";
}
else
{
return "";
}
return
"https://endic.naver.com" +
sSplit +
sFrontPageHtml.Split(new[] { sSplit }, StringSplitOptions.None)[1].
Split(new[] { "\" class=\"" }, StringSplitOptions.None)[0];
}
// 본체
{
string sUrl = _myGetEntryUrl();
if (sUrl.Length == 0)
{
return "";
}
string sHtml = _myGetHtml(sUrl);
if (sHtml.Length == 0)
{
return "";
}
return sHtml;
}
}
List<string> _myGetClassTree(string sHtml)
{
WebBrowser wbTmp = new WebBrowser();
wbTmp.ScriptErrorsSuppressed = true;
wbTmp.DocumentText = "0";
while (wbTmp.Document == null || wbTmp.Document.Body == null)
{
Application.DoEvents();
}
wbTmp.Document.OpenNew(false).Write(sHtml);
while (wbTmp.Document == null || wbTmp.Document.Body == null)
{
Application.DoEvents();
}
HtmlElementCollection htmlElementCollection =
wbTmp.Document.Body.GetElementsByTagName("*");
StringBuilder sbClassTree = new StringBuilder();
HtmlElement htmlElement_Tmp; ;
foreach (HtmlElement htmlElement in htmlElementCollection)
{//
if (
(htmlElement.InnerText == null) ||
(htmlElement.InnerText.Trim().Length == 0) ||
(htmlElement.InnerText.IndexOf(_CRLF) > -1) ||
(htmlElement.InnerText.IndexOf("/r") > -1) ||
(htmlElement.InnerText.IndexOf("/n") > -1) ||
false)
{
continue;
}
htmlElement_Tmp = htmlElement;
if (htmlElement.InnerHtml.IndexOf("alt=HELP") > -1)
{
//_textBox_BulkErr.AppendText(htmlElement_Tmp.InnerHtml + Environment.NewLine);
continue;
}
sbClassTree.Append(htmlElement_Tmp.InnerText + "\t" + "/" + htmlElement_Tmp.GetAttribute("classname"));
while (htmlElement_Tmp.Parent != null)
{
htmlElement_Tmp = htmlElement_Tmp.Parent;
sbClassTree.Append("/" + htmlElement_Tmp.GetAttribute("classname"));
}
sbClassTree.Append(_CRLF);
}
wbTmp.Dispose();
List<string> lstClassTree =
sbClassTree.ToString().Trim().
Split(new[] { _CRLF }, StringSplitOptions.None).ToList();
List<string> lstUsefulTree = new List<string>();
lstUsefulTree.Add("//align_right//list_e2/word_num ");
lstUsefulTree.Add("//tit/word_view");
lstUsefulTree.Add("/fnt_e16/");
lstUsefulTree.Add("/fy/pron/word_view/////");
lstUsefulTree.Add("////sync/word_view/////");
lstUsefulTree.Add("/fnt_syn/dic_tit6/box_wrap1");
lstUsefulTree.Add("/fnt_k06/align_line");
lstUsefulTree.Add("/align_line");
lstUsefulTree.Add("list_a8");
lstUsefulTree.Add("/fnt_e07 _ttsText/bg/");
lstUsefulTree.Add("/fnt_k10//");
lstUsefulTree.Add("/list_a3");
lstUsefulTree.Add("/fnt_e01/");
lstUsefulTree.Add("/list_a4/");
lstUsefulTree.Add("/fnt_k05///list_e4/box_wrap21/zoom_con_lv1/////");
lstUsefulTree.Add("/mean bg/desc/list_a4/box_wrap1 dicType_O/zoom_con_lv1/");
lstUsefulTree.Add("/dic_tit4 dic_tit12/word_num_nobor/////");
lstUsefulTree.Add("/dic_tit3 dic_tit11/word_num_nobor/////");
lstUsefulTree.Add("/first/list_e3 list_e3x/word_num_nobor/////");
lstUsefulTree.Add("//list_e3 list_e3x/word_num_nobor/////");
lstUsefulTree.Add("//pad/list_e3 list_e3x/word_num_nobor/////");
lstUsefulTree.Add("///list_e3 list_e3x/word_num_nobor/////");
List<string> lstResultTree = new List<string>();
lstResultTree.Add("\t"); // 비어있는 경우 있음.
foreach (string sClassTree in lstClassTree)
{
foreach (string sUsefulTree in lstUsefulTree)
{
if (sClassTree.IndexOf(sUsefulTree) > -1)
{
lstResultTree.Add(sClassTree);
break;
}
}
}
//Clipboard.SetText(string.Join(_CRLF,lstResultTree.ToArray()));
//MessageBox.Show("Test");
return lstResultTree;
}
void _myGet대표정보(List<string> lstClassTree)
{
foreach (string sLine in lstClassTree)
{
// "/fnt_k05//align_right//list_e2/word_num /////"
if (sLine.Split('\t')[1].IndexOf("//align_right//list_e2/word_num ") > -1)
{
// fellow 참조
// deep 반의어
// adult 유의어
// pool 상호참조
// MessageBox.Show(sLine.Split('\t')[0]);
string sMean = sLine.Split('\t')[0];
if (sMean.IndexOf("사]") > -1)
{
s대표품사 = sMean.Split(new[] { "사]" }, StringSplitOptions.None)[0] + "사]";
}
else
{
if (s대표품사.Length == 0)
{
s대표품사 = "[숙어]";
}
}
if (sMean.IndexOf(" 참조 ") > -1)
{
s대표참조어 = sMean.Split(new[] { " 참조 " }, StringSplitOptions.None)[1];
}
else if (sMean.IndexOf(" 상호참조 ") > -1)
{
s대표상호참조어 = sMean.Split(new[] { " 상호참조 " }, StringSplitOptions.None)[1];
}
else if (sMean.IndexOf(" 유의어 ") > -1)
{
s대표유의어 = sMean.Split(new[] { " 유의어 " }, StringSplitOptions.None)[1];
}
else if (sMean.IndexOf(" 반의어 ") > -1)
{
s대표반의어 = sMean.Split(new[] { " 반의어 " }, StringSplitOptions.None)[1];
}
s대표뜻 =
sMean.
Replace(s대표품사, "").
Replace(" 참조 " + s대표참조어, "").
Replace(" 상호참조 " + s대표참조어, "").
Replace(" 유의어 " + s대표유의어, "").
Replace(" 반의어 " + s대표반의어, "").
Trim();
s대표유의어 = s대표유의어.Trim();
s대표반의어 = s대표반의어.Trim();
s대표참조어 = s대표참조어.Trim();
s대표상호참조어 = s대표상호참조어.Trim();
//MessageBox.Show(
// s대표뜻 + Environment.NewLine +
// s대표품사 + Environment.NewLine +
// s대표유의어 + Environment.NewLine +
// s대표반의어 + Environment.NewLine +
// s대표참조어);
if (s대표뜻.Length == 0)
{//tour 때문임.
continue;
}
break;
}
}
}
void _myGet기본정보(List<string> lstClassTree, string sHtml)
{
void _myGet용법()
{
for (int nIndex = 0; nIndex < lstClassTree.Count(); nIndex++)
{
if (lstClassTree[nIndex].Split('\t')[1].IndexOf("//tit/word_view") == 0)
{//・ ⇄
s용법 =
lstClassTree[nIndex].Split('\t')[0].
Replace("|", "").
Replace("·", "").
Replace("・", "").
Trim();
StringBuilder sbTmp = new StringBuilder();
foreach (char cTmp in s용법)
{
//if ((0xAC00 <= cTmp && cTmp <= 0xD7A3) || (0x3131 <= cTmp && cTmp <= 0x318E))
if ("abcdefghijklmnopqrstuvwxyz .".IndexOf((cTmp + "").ToLower()) == -1)
{
sbTmp.Append(" ");
}
else
{
sbTmp.Append(cTmp);
}
}
s정답후보 = _mySplitJoin(s정답후보, string.Join("|", sbTmp.ToString().Split(new[] { " ", ",", "/" }, StringSplitOptions.RemoveEmptyEntries)));
//MessageBox.Show(s정답후보);
break;
}
}
}
void _myGet발음기호()
{
for (int nIndex = 0; nIndex < lstClassTree.Count(); nIndex++)
{
if (
(lstClassTree[nIndex].Split('\t')[1].IndexOf("/fnt_e16/") == 0) &&
(lstClassTree[nIndex].Split('\t')[1].IndexOf("/fy/pron/word_view/////") > -1)
)
{
s발음기호 = lstClassTree[nIndex].Split('\t')[0].Trim();
break;
}
}
}
void _myGet중요도()
{
if (sHtml.IndexOf("Oxford 3000™ 중요 어휘 목록에 속하는 단어입니다.") > -1)
{
s중요도 = "[별3]";
}
else if (sHtml.IndexOf("star_num2.gif") > -1)
{
s중요도 = "[별2]";
}
else if (sHtml.IndexOf("star_num1.gif") > -1)
{
s중요도 = "[별1]";
}
}
void _myGet난이도()
{
//"\" target=\"_blank\">중1</a>"
//"\" target=\"_blank\">중2</a>"
//"\" target=\"_blank\">중3</a>"
//Clipboard.SetText(sHtml);
if (sHtml.IndexOf("\" target=\"_blank\">중1</a>") > -1)
{
s난이도 = s난이도 + "[중1]";
}
if (sHtml.IndexOf("\" target=\"_blank\">중2</a>") > -1)
{
s난이도 = s난이도 + "[중2]";
}
if (sHtml.IndexOf("\" target=\"_blank\">중3</a>") > -1)
{
s난이도 = s난이도 + "[중3]";
}
if (sHtml.IndexOf("\" target=\"_blank\">고교 공통</a>") > -1)
{
s난이도 = s난이도 + "[고0]";
}
if (sHtml.IndexOf("\" target=\"_blank\">고교 영어1</a>") > -1)
{
s난이도 = s난이도 + "[고1]";
}
if (sHtml.IndexOf("\" target=\"_blank\">고교 영어2/a>") > -1)
{
s난이도 = s난이도 + "[고2]";
}
}
void _myGet변형()
{
for (int nIndex = 0; nIndex < lstClassTree.Count(); nIndex++)
{
string sNewLine = lstClassTree[nIndex].Split('\t')[0].Trim();
if (lstClassTree[nIndex].Split('\t')[1].Equals("////sync/word_view/////"))
{
if (sNewLine.IndexOf(" < ") > -1)
{
s비교급 = sNewLine.Split('<')[1].Trim();
s최상급 = sNewLine.Split('<')[2].Trim();
}
else if (sNewLine.IndexOf("복수형 ") > -1)
{
s복수형 = _mySplitJoin(s복수형, sNewLine.Replace("복수형 ", ""));
}
else if (sNewLine.IndexOf("과거 ") > -1)
{
s과거형 = _mySplitJoin(s과거형, sNewLine.Replace("과거 ", ""));
}
else if (sNewLine.IndexOf("과거분사 ") > -1)
{
s과거분사형 = _mySplitJoin(s과거분사형, sNewLine.Replace("과거분사 ", ""));
}
else if (sNewLine.IndexOf("현재분사 ") > -1)
{
s현재분사형 = _mySplitJoin(s현재분사형, sNewLine.Replace("현재분사 ", ""));
}
else if (sNewLine.IndexOf("3인칭 단수 현재 ") > -1)
{
s3인칭단수현재형 = _mySplitJoin(s3인칭단수현재형, sNewLine.Replace("3인칭 단수 현재 ", ""));
}
else if (sNewLine.IndexOf("사형 ") > -1)
{
s파생어 = _mySplitJoin(s파생어, sNewLine.Split(new[] { "사형 " }, StringSplitOptions.RemoveEmptyEntries)[1]);
}
}
}
string s변형 =
s비교급 + "|" +
s최상급 + "|" +
s복수형 + "|" +
s과거형 + "|" +
s과거분사형 + "|" +
s현재분사형 + "|" +
s3인칭단수현재형;
s정답후보 = _mySplitJoin(s정답후보, s변형);
//MessageBox.Show(s정답후보);
}
//본체
{
_myGet용법();
_myGet발음기호();
_myGet중요도();
_myGet난이도();
_myGet변형();
}
}
void _myGet품사_뜻_예문_뜻(List<string> lstClassTree)
{
void _myGet정답후보()
{
if (sWord.IndexOf(" ") > -1)
{
foreach (string sTmp in sWord.Split(' '))
{
string sRootFileName =
_DICPATH +
sTmp[0] + @"\" +
sTmp + @"\" +
sTmp + "_";
string[] asLines = System.IO.File.ReadAllLines(sRootFileName + "정답후보.txt", Encoding.UTF8);
s정답후보 = _mySplitJoin(s정답후보, asLines.Last().Split('\t')[2]);
}
}
if (dicIrrV.ContainsKey(sWord))
{
s정답후보 = _mySplitJoin(s정답후보, dicIrrV[sWord]);
}
if (dicIrrN.ContainsKey(sWord))
{
s정답후보 = _mySplitJoin(s정답후보, dicIrrN[sWord]);
}
if (
(sWord.Length > 1) &&
(sWord[sWord.Length - 1] == 'f')
)
{//leaf → leaves
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 1) + "ves");
}
else if
(
(sWord.Length > 2) &&
(sWord[sWord.Length - 2] == 'f') &&
(sWord[sWord.Length - 1] == 'e')
)
{//knife - knives
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "ves");
}
else if
(
(sWord.Length > 2) &&
(sWord[sWord.Length - 2] == 'o') &&
(sWord[sWord.Length - 1] == 'n')
)
{//phenomenon → phenomena
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "a");
}
else if
(
(sWord.Length > 2) &&
(sWord[sWord.Length - 2] == 'u') &&
(sWord[sWord.Length - 1] == 's')
)
{//fungus → fungi // bus 주의
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "i");
}
else if
(
(sWord.Length > 2) &&
(sWord[sWord.Length - 2] == 'i') &&
(sWord[sWord.Length - 1] == 's')
)
{//axis → axes
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "es");
}
else if
(
(
(sWord.Length > 2) &&
(sWord[sWord.Length - 2] == 'c') &&
(sWord[sWord.Length - 1] == 'h')
)
||
(
(sWord.Length > 2) &&
(sWord[sWord.Length - 2] == 's') &&
(sWord[sWord.Length - 1] == 'h')
)
)
{//watch → watches
s정답후보 = _mySplitJoin(s정답후보, sWord + "es");
}
else if (
(sWord.Length > 1) &&
(sWord[sWord.Length - 1] == 'y')
)
{//candy → candies
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 1) + "ies");
s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 1) + "ied");
}
else if (
(sWord.Length > 1) &&
(sWord[sWord.Length - 1] == 'e')
)
{//engine-> d
s정답후보 = _mySplitJoin(s정답후보, sWord + "d");
}
else if (
(sWord[sWord.Length - 1] == 'o') ||
(sWord[sWord.Length - 1] == 's') ||
(sWord[sWord.Length - 1] == 'x') ||
(sWord[sWord.Length - 1] == 'z')
)
{//bus → buses
s정답후보 = _mySplitJoin(s정답후보, sWord + "es");
}
s정답후보 = _mySplitJoin(s정답후보, sWord + "ing");
s정답후보 = _mySplitJoin(s정답후보, sWord + "s");
s정답후보 = _mySplitJoin(s정답후보, sWord + "ed");
//MessageBox.Show(s정답후보);
}
string _myGet괄호문제(string s예문)
{
string[] as예문 = s예문.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
string[] as정답후보 = s정답후보.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
List<int> lstAPos = new List<int>();
for (int nLoop0 = 0; nLoop0 < as정답후보.Count(); nLoop0++)
{
for (int nLoop1 = 0; nLoop1 < as예문.Count(); nLoop1++)
{
if (as예문[nLoop1].ToLower().Equals(as정답후보[nLoop0]))
{
lstAPos.Add(nLoop1);
}
else if (as예문[nLoop1].ToLower().IndexOf(as정답후보[nLoop0]) > -1)
{
string sTmp = as예문[nLoop1].ToLower().Replace(as정답후보[nLoop0], "");
if (sTmp.Trim().Length == 0) { continue; }
if (
sTmp[0] < 'a' ||
sTmp[0] > 'z' ||
sTmp[sTmp.Length - 1] < 'a' ||
sTmp[sTmp.Length - 1] > 'z')
{
lstAPos.Add(nLoop1);
}
}
}
}
if (lstAPos.Count == 0)
{
//실패
return "";
}
double nAVG = lstAPos.Average();
List<string> lstDistance = new List<string>();
foreach (int nAPos in lstAPos)
{
lstDistance.Add(Math.Abs(nAVG - nAPos).ToString("N2").PadLeft(5) + "\t" + nAPos);
}
lstDistance = lstDistance.Distinct().ToList();
lstDistance.Sort();// 가까운 순서대로 소팅됨
// lst 4개
// b ==> 1
// 4 - 1 = 3
// 1,3
if (sWord.Split(' ').Count() > lstDistance.Count)
{
//실패
return "";
}
lstDistance.RemoveRange(
sWord.Split(' ').Count(),
lstDistance.Count - sWord.Split(' ').Count());
lstAPos.Clear();
foreach (string item in lstDistance)
{
lstAPos.Add(System.Convert.ToInt32(item.Split('\t')[1]));
}
if (sWord.Split(' ').Count() > lstAPos.Count)
{
// 실패
return "";
}
// 1. 단어일때는 단순히, 정답 후보군과 일치 하거나, 이를 포함 하면 그게 정답! 그리고 그게 끝!
// 2. 숙어일때는,.,
// In this lake, abound in fish and something.
// 숙어 : abound in
// 1번과 같은 알고리즘으로 문제를 해결 하면
// (In) this lake, (abound) (in) fish and (something).
// 1 2 3 4 5 6 7 8
//정답 1 4 5 8
// 이중에 진짜 정답은? 4, 5번
// 위 숫자들의 평균 값? 1 +4 +5 +8 = 18 / 4 = 4.5
// 즉, 각각의 위치들의 평균값 : 거기에 단어가 모여 있는거!!!!!!!!!!!!
// 즉, 숙어의 특성상 끽해야 한단어 건너뜀. ask somebody out
string sQ = "";
string sA = "";
for (int nLoop1 = 0; nLoop1 < as예문.Count(); nLoop1++)
{
bool lFound = false;
for (int nLoop0 = 0; nLoop0 < lstAPos.Count(); nLoop0++)
{
if (lstAPos[nLoop0] == nLoop1)
{
lFound = true;
break;
}
}
if (lFound)
{
sQ = sQ + " " + "( )";
sA = sA + " " + as예문[nLoop1];
}
else
{
sQ = sQ + " " + as예문[nLoop1];
}
}
//MessageBox.Show(sA + Environment.NewLine + sQ);
return sQ.Trim() + "\t" + sA.Trim();
}
string _myGet발음파일명(string sTmp)
{
// 전각
//!”#$%&’()*+,-./
//0123456789:;<=>?@
//ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
//abcdefghijklmnopqrstuvwxyz{|}~
string sForbidden = "\\/:*?\"<>|";
string sReplaced = "\/:*?”<>|";
//MessageBox.Show(sForbidden + Environment.NewLine + sReplaced);
StringBuilder sbTmp = new StringBuilder();
string sRoot =
_DICPATH +
sWord[0] + @"\" +
sWord + @"\";
foreach (char cTmp in sTmp)
{
if (sForbidden.IndexOf(cTmp) > -1)
{
sbTmp.Append(sReplaced[sForbidden.IndexOf(cTmp)]);
}
else
{
sbTmp.Append(cTmp);
}
if ((sRoot.Length + sbTmp.Length + 4) > (240 / 2 - 2))
{
//MessageBox.Show(sbTmp.ToString());
sbTmp.Append("…");
break;
}
}
return sbTmp.ToString();
}
string _myGet발음_예문뜻(string s뜻)
{
bool l꺽괄호 = false;
string s뜻New = "";
foreach (char cTmp in s뜻)
{
if (
(cTmp == '[') ||
(cTmp == '(') ||
(cTmp == '<') ||
(cTmp == '《') ||
(cTmp == '【')
)
{
l꺽괄호 = true;
}
if (
(cTmp == ']') ||
(cTmp == ')') ||
(cTmp == '>') ||
(cTmp == '》') ||
(cTmp == '】')
)
{
l꺽괄호 = false;
s뜻New = s뜻New + " ";
continue;
}
if (l꺽괄호)
{
s뜻New = s뜻New + " ";
}
else
{
s뜻New = s뜻New + cTmp;
}
}
s뜻New =
s뜻New.
Replace("\\", ", ").
Replace("/", ", ").
Replace(";", ", ").
Replace("·", ", ").
// Replace("~", "뭐뭐").
Replace("…", "뭐뭐").
Replace("=", "");
s뜻New = string.Join(" ", s뜻New.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries));
return s뜻New;
}
string _myGet발음_예문(string s예문)
{
bool l꺽괄호 = false;
string s예문New = "";
foreach (char cTmp in s예문)
{
if (cTmp == '[')
{
l꺽괄호 = true;
}
if (cTmp == ']')
{
l꺽괄호 = false;
s예문New = s예문New + " ";
continue;
}
if (l꺽괄호)
{
s예문New = s예문New + " ";
}
else
{
s예문New = s예문New + cTmp;
}
}
List<string> lstWord = new List<string>();
List<int> lstDelIndex = new List<int>();
lstWord = s예문New.Split(' ').ToList();
for (int nIndexWord = 0; nIndexWord < lstWord.Count; nIndexWord++)
{
if (lstWord[nIndexWord].IndexOf("(") == -1)
{
continue;
}
foreach (char cTmp in lstWord[nIndexWord])
{
if ((cTmp == '(') || (cTmp == ')'))
{
continue;
}
if ("abcdefghijklmnopqrstuvwxyz ',.-*/=!?’×…°\\".
IndexOf((cTmp + "").ToLower()[0]) == -1)
{
// 지워야 할 워드
// lstDelIndex.Add(nIndexWord);
lstWord[nIndexWord] = " ";
break;
}
}
}
s예문New = string.Join(" ", lstWord);
s예문New = string.Join(" ", s예문New.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries));
return s예문New;
}
//본체
{
_myGet정답후보();
StringBuilder sbLines = new StringBuilder();
string s품사 = "";
string s뜻 = "";
string sOld뜻 = "";
string s예문 = "";
string s예문의뜻 = "";
string sOld예문의뜻 = "";
string sRoot =
_DICPATH +
sWord[0] + @"\" +
sWord + @"\";
System.IO.Directory.CreateDirectory(sRoot);
sRoot = sRoot + sWord + "_";
int nCount1 = 0;
int nCount2 = 1;
foreach (string sLine in lstClassTree)
{
string sClassTree = sLine.Split('\t')[1].Trim();
string sNewLine = sLine.Split('\t')[0].Trim();
if (sClassTree.IndexOf("/fnt_syn/dic_tit6/box_wrap1") == 0)
{
s품사 = sNewLine;
}
else if (
(
sClassTree.IndexOf("/fnt_k09//align_line") == 0 ||
sClassTree.IndexOf("/fnt_k06/align_line") == 0 ||
sClassTree.IndexOf("/align_line") == 0) &&
(sClassTree.IndexOf("list_a8") == -1 /* 영영사전 care for */)
// HELP
// "//align_line/first mean_on meanClass/list_a3/box_wrap1 dicType_O box_wrap1_mar1 /zoom_con_lv1/////"
//"/fnt_k09//align_line/first mean_on meanClass/list_a3/box_wrap1 dicType_O box_wrap1_mar1 /zoom_con_lv1/////"
)
{
if (sOld뜻.IndexOf(sNewLine.Replace("예문닫기", "").Trim()) == -1)
{
//Clipboard.SetText(string.Join(_CRLF, lstClassTree.ToArray()));
//MessageBox.Show("Test");
nCount1++;
nCount2 = 0;
if (s품사.Equals("")) { s품사 = "숙어"; }
s뜻 = sNewLine.Replace("예문닫기", "").Trim();
//if (s뜻.Length > 100) { s뜻 = "[HELP] " + s뜻; }
System.IO.File.WriteAllText(
sRoot +
"뜻_" +
nCount1.ToString().PadLeft(3, '0') +
"_000E_" +
_myGet발음파일명(s용법) +
".2bw",
_myGet발음_예문(s용법),
Encoding.UTF8);
System.IO.File.WriteAllText(
sRoot +
"뜻_" +
nCount1.ToString().PadLeft(3, '0') +
"_000K_" +
_myGet발음파일명(s뜻) +
".2bw",
_myGet발음_예문뜻(s뜻),
Encoding.UTF8);
sbLines.AppendLine(sWord + "\t" + s용법 + "\t" + s품사 + "\t" + s뜻 + "\t" + "" + "\t" + "" + "\t" + "");
sOld뜻 = s뜻;
}
}
else if (sClassTree.IndexOf("/fnt_e07 _ttsText/bg/") == 0)
{
s예문 = sNewLine;
}
else if (
(sClassTree.IndexOf("/fnt_k10//") == 0) &&
(sClassTree.IndexOf("/list_a3") > -1)
)
{
if (!sOld예문의뜻.Equals(sNewLine))
{
nCount2++;
s예문의뜻 = sNewLine;
sOld예문의뜻 = s예문의뜻;
string s괄호문제및정답 = _myGet괄호문제(s예문);
//MessageBox.Show(_myGet발음파일명(s예문));
//MessageBox.Show(_myGet발음파일명(s예문의뜻));
System.IO.File.WriteAllText(
sRoot +
"뜻_" +
nCount1.ToString().PadLeft(3, '0') +
"_예문_" +
nCount2.ToString().PadLeft(3, '0') +
"E_" +
_myGet발음파일명(s예문) + ".2bw",
_myGet발음_예문(s예문),
Encoding.UTF8);
System.IO.File.WriteAllText(
sRoot +
"뜻_" +
nCount1.ToString().PadLeft(3, '0') +
"_예문_" +
nCount2.ToString().PadLeft(3, '0') +
"K_" +
_myGet발음파일명(s예문의뜻) + ".2bw",
_myGet발음_예문뜻(s예문의뜻),
Encoding.UTF8);
sbLines.AppendLine(sWord + "\t" + s용법 + "\t" + s품사 + "\t" + s뜻 + "\t" + s예문 + "\t" + s예문의뜻 + "\t" + s괄호문제및정답);
}
}
else if (
(sClassTree.IndexOf("/fnt_e01/") == 0) &&
(
(sClassTree.IndexOf("/list_e4/") > -1) ||
(sClassTree.IndexOf("/list_a4/") > -1))
)
{
//Clipboard.SetText(string.Join(_CRLF, lstClassTree.ToArray()));
//MessageBox.Show("Test");
nCount1++;
nCount2 = 0;
s품사 = "숙어";
s뜻 = "";
s예문 =
sNewLine.
Replace("|", "").
Replace("·", "");
}
else if (
(sClassTree.IndexOf("/fnt_k05///list_e4/box_wrap21/zoom_con_lv1/////") == 0) ||
(sClassTree.IndexOf("/mean bg/desc/list_a4/box_wrap1 dicType_O/zoom_con_lv1/") == 0)
)
{
if (!sOld예문의뜻.Equals(sNewLine))
{
nCount2++;
s예문의뜻 = sNewLine;
sOld예문의뜻 = s예문의뜻;
if (
(s예문의뜻.IndexOf(". ") == 1)
)
{
s예문의뜻 = s예문의뜻.Substring(3);
}
if (//come ㄷㄷㄷ
(s예문의뜻.IndexOf(". ") == 2)
)
{
s예문의뜻 = s예문의뜻.Substring(4);
}
string s괄호문제및정답 = _myGet괄호문제(s예문);
System.IO.File.WriteAllText(
sRoot +
"숙어_" +
nCount1.ToString().PadLeft(3, '0') +
"_예문_" +
nCount2.ToString().PadLeft(3, '0') +
"_E_" +
_myGet발음파일명(s예문) + ".2bw",
_myGet발음_예문(s예문),
Encoding.UTF8);
System.IO.File.WriteAllText(
sRoot +
"숙어_" +
nCount1.ToString().PadLeft(3, '0') +
"_예문_" +
nCount2.ToString().PadLeft(3, '0') +
"_K_" +
_myGet발음파일명(s예문의뜻) + ".2bw",
_myGet발음_예문뜻(s예문의뜻),
Encoding.UTF8);
sbLines.AppendLine(sWord + "\t" + s용법 + "\t" + s품사 + "\t" + s뜻 + "\t" + s예문 + "\t" + s예문의뜻 + "\t" + s괄호문제및정답);
}
}
}
s뜻과예문목록 = sbLines.ToString().Trim();
//Clipboard.SetText(s뜻과예문목록);
//MessageBox.Show(s뜻과예문목록);
}
}
void _myGet유의반의정보(List<string> lstClassTree)
{
StringBuilder sbLines유의어 = new StringBuilder();
StringBuilder sbLines반의어 = new StringBuilder();
string s품사 = "";
string s대의 = "";
foreach (string sLine in lstClassTree)
{
if (
sLine.Split('\t')[1].Equals("/dic_tit4 dic_tit12/word_num_nobor/////") ||
sLine.Split('\t')[1].Equals("/dic_tit3 dic_tit11/word_num_nobor/////")
)
{
s품사 = sLine.Split('\t')[0].Trim();
}
if (
(
sLine.Split('\t')[1].Equals("/first/list_e3 list_e3x/word_num_nobor/////") ||
sLine.Split('\t')[1].Equals("//list_e3 list_e3x/word_num_nobor/////")
) &&
sLine.Split('\t')[0].IndexOf("유의어") == -1 &&
sLine.Split('\t')[0].IndexOf("반의어") == -1
)
{
s대의 = sLine.Split('\t')[0].Trim();
}
if (
(
sLine.Split('\t')[1].Equals("//pad/list_e3 list_e3x/word_num_nobor/////") ||
sLine.Split('\t')[1].Equals("///list_e3 list_e3x/word_num_nobor/////")
) &&
(
sLine.Split('\t')[0].IndexOf("유의어") > -1 ||
sLine.Split('\t')[0].IndexOf("반의어") > -1)
)
{
string sTmp = sLine.Split('\t')[0];
string sKind = "";
if (sTmp.IndexOf("[유의어]") > -1)
{
sKind = "[유의어]";
}
else
{
sKind = "[반의어]";
}
sTmp = sTmp.Replace(sKind, "");
StringBuilder sbTmp = new StringBuilder();
foreach (char cTmp in sTmp)
{
if (cTmp < '가')
{
sbTmp.Append(cTmp);
}
else
{
break;
}
}
sTmp = sTmp.Replace(sbTmp.ToString(), sbTmp.ToString() + "\t");
if (sKind.Equals("[유의어]"))
{
sbLines유의어.AppendLine(
sWord + "\t" +
s용법 + "\t" +
s품사 + "\t" +
s대의 + "\t" +
sKind + "\t" +
sTmp.Split('\t')[0] + "\t" +
sTmp.Split('\t')[1]
);
}
else
{
sbLines반의어.AppendLine(
sWord + "\t" +
s용법 + "\t" +
s품사 + "\t" +
s대의 + "\t" +
sKind + "\t" +
sTmp.Split('\t')[0] + "\t" +
sTmp.Split('\t')[1]
);
}
}
}
s유의어목록 = sbLines유의어.ToString().Trim();
s반의어목록 = sbLines반의어.ToString().Trim();
}
void _myMakeFile()
{
//System.IO.Directory.CreateDirectory(_DICPATH +sWord[0] + @"\" +sWord);
string sRootFileName =
_DICPATH +
sWord[0] + @"\" +
sWord + @"\" +
sWord + "__";
string s대표정보Header =
"검색어" + "\t" +
"용법" + "\t" +
"대표품사" + "\t" +
"대표뜻" + "\t" +
"대표유의어" + "\t" +
"대표반의어" + "\t" +
"대표참조어" + "\t" +
"대표상호참조어" +
_CRLF;
string s대표정보 =
s검색어 + "\t" +
s용법 + "\t" +
s대표품사 + "\t" +
s대표뜻 + "\t" +
s대표유의어 + "\t" +
s대표반의어 + "\t" +
s대표참조어 + "\t" +
s대표상호참조어;
System.IO.File.WriteAllText(
sRootFileName +
"대표정보.txt",
s대표정보Header +
s대표정보,
Encoding.UTF8);
string s기본정보Header =
"검색어" + "\t" +
"용법" + "\t" +
"발음기호" + "\t" +
"중요도" + "\t" +
"난이도" + "\t" +
"복수형" + "\t" +
"비교급" + "\t" +
"최상급" + "\t" +
"과거형" + "\t" +
"과거분사형" + "\t" +
"현재분사형" + "\t" +
"3인칭단수현재형" + "\t" +
"파생어" +
_CRLF;
string s기본정보 =
s검색어 + "\t" +
s용법 + "\t" +
s발음기호 + "\t" +
s중요도 + "\t" +
s난이도 + "\t" +
s복수형 + "\t" +
s비교급 + "\t" +
s최상급 + "\t" +
s과거형 + "\t" +
s과거분사형 + "\t" +
s현재분사형 + "\t" +
s3인칭단수현재형 + "\t" +
s파생어;
//System.IO.File.WriteAllText(
// _HISTORYPATH + @"입력일자\" +
// DateTime.Now.ToString("yyyy년MM월dd일 HH시mm분ss초") +
// "__" +
// sWord +
// ".입력일자",
// "");
//System.IO.File.WriteAllText(
// _HISTORYPATH + @"최종시험일자\" +
// "2019년01월10일 00시00분01초" +
// "__" +
// sWord +
// ".최종시험일자",
// "");
//System.IO.File.WriteAllText(
// _HISTORYPATH + @"시험횟수\" +
// "0" +
// "__" +
// sWord +
// ".시험횟수",
// "");
//System.IO.File.WriteAllText(
// _HISTORYPATH + @"맞은횟수\" +
// "0" +
// "__" +
// sWord +
// ".맞은횟수",
// "");
//System.IO.File.WriteAllText(
// _HISTORYPATH + @"틀린횟수\" +
// "0" +
// "__" +
// sWord +
// ".틀린횟수",
// "");
System.IO.File.WriteAllText(
_HISTORYPATH + @"최근시험결과\" +
"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" +
"__" +
sWord +
".최근시험결과",
"");
System.IO.File.WriteAllText(
_HISTORYPATH + @"난이도\" +
s난이도 +
"__" +
sWord +
".난이도",
"");
System.IO.File.WriteAllText(
_HISTORYPATH + @"중요도\" +
s중요도 +
"__" +
sWord +
".중요도",
"");
System.IO.File.WriteAllText(
_HISTORYPATH + @"태그\" +
"옥스포드3000" +
"__" +
sWord +
".태그",
"");
System.IO.File.WriteAllText(
sRootFileName +
"기본정보.txt",
s기본정보Header +
s기본정보,
Encoding.UTF8);
string s정답후보Header =
"검색어" + "\t" +
"용법" + "\t" +
"정답후보" +
_CRLF;
System.IO.File.WriteAllText(
sRootFileName +
"정답후보.txt",
s정답후보Header +
s검색어 + "\t" +
s용법 + "\t" +
s정답후보,
Encoding.UTF8);
string s뜻과예문Header =
"검색어" + "\t" +
"용법" + "\t" +
"품사" + "\t" +
"뜻" + "\t" +
"예문" + "\t" +
"예문의뜻" + "\t" +
"괄호문제" + "\t" +
"정답" + "\t" +
_CRLF;
System.IO.File.WriteAllText(
sRootFileName +
"뜻과예문.txt",
s뜻과예문Header +
s뜻과예문목록,
Encoding.UTF8);
string s유의어Header =
"검색어" + "\t" +
"용법" + "\t" +
"품사" + "\t" +
"대의" + "\t" +
"종류" + "\t" +
"단어" +
"뜻" +
_CRLF;
System.IO.File.WriteAllText(
sRootFileName +
"유의어.txt",
s유의어Header +
s유의어목록,
Encoding.UTF8);
string s반의어Header =
"검색어" + "\t" +
"용법" + "\t" +
"품사" + "\t" +
"대의" + "\t" +
"종류" + "\t" +
"단어" +
"뜻" +
_CRLF;
System.IO.File.WriteAllText(
sRootFileName +
"반의어.txt",
s반의어Header +
s반의어목록,
Encoding.UTF8);
}
// 본체
{
string sHtml = _myGetRealHtml();
List<string> lstClassTree = _myGetClassTree(sHtml);
_myGet기본정보(lstClassTree, sHtml);
_myGet품사_뜻_예문_뜻(lstClassTree);
_myGet대표정보(_myGetClassTree(sFrontPageHtml));
_myGet유의반의정보(_myGetClassTree(sThesaurusHtml));
_myMakeFile();
}
}
// 본체
{
_toolStripProgressBar_Main.Maximum = _textBox_Bulk.Lines.Count();
_toolStripProgressBar_Main.Value = 0;
foreach (string sLine in _textBox_Bulk.Lines)
{
_toolStripProgressBar_Main.Value++;
if (sLine.Trim().Length == 0) { continue; }
// 주의! 폴더명 맨 끝에 . 못들어감.
string[] asWord =
sLine.
Trim().
ToLower().
Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
List<string> lstWord = asWord.ToList();
if (lstWord.Count > 1)
{
lstWord.Add(sLine);
}
string sWordNew = "";
foreach (string sWord in lstWord)
{
sWordNew = sWord;
if (sWordNew.Last() == '.')
{
sWordNew = sWordNew.Substring(0, sWordNew.Length - 1);
}
//MessageBox.Show(sWordNew);
_myLog(sWordNew + " 시작");
if (!_myCheckFileName(sWordNew))
{
//_textBox_BulkErr.AppendText(
// sWord + " " + "실패! (단어에 금지된 글자 감지)" + _CRLF);
//continue;
}
else if (_myCheckWordExists(sWordNew))
{
//_textBox_BulkErr.AppendText(
// sWord + " " + "실패! (이미 사전에 있는 단어 감지)" + _CRLF);
//continue;
}
else
{
_myGetDic(sWordNew);
}
_myLog(sWord + " 완료");
}
}
}
}
private void _button_GetDic_Click(object sender, EventArgs e)
{
_myStartBulkGetDic();
}
private void button8_Click(object sender, EventArgs e)
{
textBox2.Clear();
DateTime dtOld = DateTime.Now;
_myMakeQuiz();
textBox2.AppendText("문제 후보 단어군 선택 소요 시간 : " + (DateTime.Now - dtOld).TotalMilliseconds + "밀리초 소요" + Environment.NewLine);
}
private void _myMakeQuiz()
{
string sList = "";
foreach (string item in _listBox_Prior.Items)
{
sList = sList + "\t" + item;
}
string s안풀어본것 = sList.Split(new[] { "안 풀어본 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
string s최종틀린것 = sList.Split(new[] { "최종 틀린 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
string s많이틀린것 = sList.Split(new[] { "많이 틀린 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
string s오래전푼것 = sList.Split(new[] { "오래전 푼 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
List<string> lst중요도 = _myMakeQuiz중요도();
textBox2.AppendText("중요도 조건에 맞는 단어 수 : " + lst중요도.Count + "개" + Environment.NewLine);
List<string> lst난이도 = _myMakeQuiz난이도();
textBox2.AppendText("난이도 조건에 맞는 단어 수 : " + lst난이도.Count + "개" + Environment.NewLine);
List<string> lst태그 = _myMakeQuiz태그();
textBox2.AppendText("태그 조건에 맞는 단어 수 : " + lst태그.Count + "개" + Environment.NewLine);
List<string> lst단어후보 = lst중요도.Intersect(lst난이도.Intersect(lst태그)).ToList();
textBox2.AppendText("중요도, 난이도, 태그 조건의 교집합 단어 갯수 : " + lst단어후보.Count + "개" + Environment.NewLine);
List<string> lst시험안본것 = _myMakeQuiz시험안본것();
List<string> lst단어후보_시험안본것 = lst단어후보.Intersect(lst시험안본것).ToList();
int nReadyWords = lst단어후보_시험안본것.Count;
int nNeedWords = (int) (100 * 0.01 * System.Convert.ToInt16(s안풀어본것));
textBox2.AppendText("단어 후보와 시험 안본 단어 교집합 갯수 : " + nReadyWords + "개" + Environment.NewLine);
textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + nNeedWords+ "개" + Environment.NewLine);
if (nNeedWords <= nReadyWords)
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("안풀어 본것 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
else
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("안풀어 본것 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
List<string> lst최종틀린것 = _myMakeQuiz최종틀린것();
List<string> lst단어후보_최종틀린것 = lst단어후보.Intersect(lst최종틀린것).ToList();
nReadyWords = lst단어후보_최종틀린것.Count;
nNeedWords = (int)(100 * 0.01 * System.Convert.ToInt16(s최종틀린것));
textBox2.AppendText("단어 후보와 최종 틀린 단어 교집합 갯수 : " + nReadyWords + "개" + Environment.NewLine);
textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + nNeedWords + "개" + Environment.NewLine);
if (nNeedWords <= nReadyWords)
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("최종 틀린 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
else
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("최종 틀린 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
List<string> lst많이틀린것 = _myMakeQuiz많이틀린것();
List<string> lst단어후보_많이틀린것 = lst단어후보.Intersect(lst많이틀린것).ToList();
nReadyWords = lst단어후보_많이틀린것.Count;
nNeedWords = (int)(100 * 0.01 * System.Convert.ToInt16(s많이틀린것));
textBox2.AppendText("단어 후보와 많이 틀린 단어 교집합 갯수 : " + lst단어후보_많이틀린것.Count + "개" + Environment.NewLine);
textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + (100 * 0.01 * System.Convert.ToInt16(s많이틀린것)) + "개" + Environment.NewLine);
if (nNeedWords <= nReadyWords)
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("많이 틀린 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
else
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("많이 틀린 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
List<string> lst오래된것 = _myMakeQuiz오래된것();
List<string> lst단어후보_오래된것 = lst단어후보.Intersect(lst오래된것).ToList();
nReadyWords = lst단어후보_오래된것.Count;
nNeedWords = (int)(100 * 0.01 * System.Convert.ToInt16(s오래전푼것));
textBox2.AppendText("단어 후보와 오래된 단어 교집합 갯수 : " + lst단어후보_오래된것.Count + "개" + Environment.NewLine);
textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + (100 * 0.01 * System.Convert.ToInt16(s오래전푼것)) + "개" + Environment.NewLine);
if (nNeedWords <= nReadyWords)
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("오래전 푼 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
else
{
textBox2.AppendText(Environment.NewLine);
textBox2.AppendText("오래전 푼 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
textBox2.AppendText(Environment.NewLine);
}
}
private List<string> _myMakeQuiz태그()
{
List<string> lstQuziWord = new List<string>();
List<string> lstResult = new List<string>();
string sTags = "";
for (int nIndex = 0; nIndex < _checkedListBox_Tag.Items.Count; nIndex++)
{
if (_checkedListBox_Tag.GetItemChecked(nIndex))
{
sTags = sTags + "\t" + _checkedListBox_Tag.Items[nIndex].ToString();
}
}
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"태그\", "*.태그"));
string sTag = "";
foreach (string sFileName in lstQuziWord)
{
sTag = sFileName.Split('\\').Last().Split(new[] { "__" }, StringSplitOptions.None)[0];
if ((_radioButton_TagAll.Checked) || (sTags.IndexOf(sTag) > -1))
{
lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".태그", ""));
}
}
return lstResult.Distinct().ToList();
}
private List<string> _myMakeQuiz오래된것()
{
System.IO.DirectoryInfo info = new System.IO.DirectoryInfo(_HISTORYPATH + @"최근시험결과\");
System.IO.FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
List<string> lstResult = new List<string>();
foreach (System.IO.FileInfo fileInfo in files)
{
lstResult.Add(fileInfo.FullName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
}
return lstResult.Distinct().ToList();
}
private List<string> _myMakeQuiz시험안본것()
{
List<string> lstQuziWord = new List<string>();
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"최근시험결과\", "N*.최근시험결과"));
List<string> lstResult = new List<string>();
foreach (string sFileName in lstQuziWord)
{
lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
}
return lstResult.Distinct().ToList();
}
private List<string> _myMakeQuiz많이틀린것()
{
List<string> lstQuziWord = new List<string>();
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"최근시험결과\", "*.최근시험결과").Reverse());
List<string> lstResult = new List<string>();
foreach (string sFileName in lstQuziWord)
{
if (sFileName.IndexOf("\\N") > -1) { continue; }
lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
}
return lstResult.Distinct().ToList();
}
private List<string> _myMakeQuiz최종틀린것()
{
List<string> lstQuziWord = new List<string>();
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"최근시험결과\", "X*.최근시험결과"));
List<string> lstResult = new List<string>();
foreach (string sFileName in lstQuziWord)
{
lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
}
return lstResult.Distinct().ToList();
}
private List<string> _myMakeQuiz난이도()
{
List<string> lstQuziWord = new List<string>();
if (_radioButton_난이도_전체.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*.*"));
}
else
{
if (_checkBox_난이도_중1.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[중1]*.*"));
}
if (_checkBox_난이도_중2.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[중2]*.*"));
}
if (_checkBox_난이도_중3.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[중3]*.*"));
}
if (_checkBox_난이도_고0.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[고0]*.*"));
}
if (_checkBox_난이도_고1.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[고1]*.*"));
}
if (_checkBox_난이도_고2.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[고2]*.*"));
}
if (_checkBox_난이도_무등급.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "__*.*"));
}
}
List<string> lstResult = new List<string>();
foreach (string sFileName in lstQuziWord)
{
lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".난이도", ""));
}
return lstResult.Distinct().ToList();
}
private List<string> _myMakeQuiz중요도()
{
List<string> lstQuziWord = new List<string>();
if (_radioButton_중요도_전체.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "*.*"));
}
else
{
if (_checkBox_중요도_별3.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "[별3]__*.*"));
}
if (_checkBox_중요도_별2.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "[별2]__*.*"));
}
if (_checkBox_중요도_별1.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "[별1]__*.*"));
}
if (_checkBox_중요도_무등급.Checked)
{
lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "__*.*"));
}
}
//_groupBox_중요도.Text = "중요도 필터 설정 (필터링된 단어/숙어 : " + lstQuziWord.Distinct().ToList().Count().ToString("N0") + " 개)";
//MessageBox.Show(lstQuziWord.Distinct().ToList().Count()+"");
List<string> lstResult = new List<string>();
foreach (string sFileName in lstQuziWord)
{
lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".중요도", ""));
}
return lstResult.Distinct().ToList();
}
private void radioButton6_CheckedChanged(object sender, EventArgs e)
{
if (!radioButton6.Checked)
{
_checkedListBox_Tag.Items.Clear();
return;
}
Dictionary<string, string> dicTags = new Dictionary<string, string>();
string[] asFiles = System.IO.Directory.GetFiles(_HISTORYPATH + "태그");
foreach (string sFileName in asFiles)
{
dicTags[sFileName.Split('\\').Last().Split(new[] { "__" }, StringSplitOptions.None)[0].Replace(".태그", "")] = "";
}
foreach (var item in dicTags)
{
_checkedListBox_Tag.Items.Add(item.Key);
}
}
private void _button_TagSearch_Click(object sender, EventArgs e)
{
if (_textBox_TagSearch.Text.Trim().Length == 0) { return; }
for (int nIndex = 0; nIndex < _checkedListBox_Tag.Items.Count; nIndex++)
{
if (_checkedListBox_Tag.Items[nIndex].ToString().IndexOf(_textBox_TagSearch.Text.Trim()) > -1)
{
_checkedListBox_Tag.SetItemChecked(nIndex, true);
}
}
}
private void _button_TagReset_Click(object sender, EventArgs e)
{
for (int nIndex = 0; nIndex < _checkedListBox_Tag.Items.Count; nIndex++)
{
_checkedListBox_Tag.SetItemChecked(nIndex, false);
}
}
private void _myPriorAddTail()
{
for (int nIndex = 0; nIndex < _listBox_Prior.Items.Count; nIndex++)
{
_listBox_Prior.Items[nIndex] = _listBox_Prior.Items[nIndex].ToString() + " (" + (40 - nIndex * 10) + "%)";
}
}
private void _myPriorRemoveTail()
{
for (int nIndex = 0; nIndex < _listBox_Prior.Items.Count; nIndex++)
{
_listBox_Prior.Items[nIndex] = _listBox_Prior.Items[nIndex].ToString().Split('(')[0].Trim();
}
}
private void _button_PriorReSet_Click(object sender, EventArgs e)
{
_listBox_Prior.Items.Clear();
_listBox_Prior.Items.Add("안 풀어본 것");
_listBox_Prior.Items.Add("최종 틀린 것");
_listBox_Prior.Items.Add("많이 틀린 것");
_listBox_Prior.Items.Add("오래전 푼 것");
_myPriorAddTail();
}
private void _button_PriorUp_Click(object sender, EventArgs e)
{
if ((_listBox_Prior.SelectedIndex == -1) ||
(_listBox_Prior.SelectedIndex == 0)
)
{
return;
}
_listBox_Prior.Items.Insert(_listBox_Prior.SelectedIndex + 1, _listBox_Prior.Items[_listBox_Prior.SelectedIndex - 1]);
_listBox_Prior.Items.RemoveAt(_listBox_Prior.SelectedIndex - 1);
_myPriorRemoveTail();
_myPriorAddTail();
}
private void _button_PriorDn_Click(object sender, EventArgs e)
{
if ((_listBox_Prior.SelectedIndex == -1) ||
(_listBox_Prior.SelectedIndex == _listBox_Prior.Items.Count - 1)
)
{
return;
}
_listBox_Prior.Items.Insert(_listBox_Prior.SelectedIndex, _listBox_Prior.Items[_listBox_Prior.SelectedIndex + 1]);
_listBox_Prior.Items.RemoveAt(_listBox_Prior.SelectedIndex + 1);
_myPriorRemoveTail();
_myPriorAddTail();
}
private void _button_Prior100_Click(object sender, EventArgs e)
{
_myPriorRemoveTail();
_listBox_Prior.Items[0] = _listBox_Prior.Items[0].ToString() + " (100%)";
for (int nIndex = 1; nIndex < _listBox_Prior.Items.Count; nIndex++)
{
_listBox_Prior.Items[nIndex] = _listBox_Prior.Items[nIndex].ToString() + " (0%)";
}
}
}
}
카테고리 없음