public void Trump_WideNarrow_Test() { Bench(ExampleText.TRUMP, 10, new[] { new Pair <string, Func <string, string> >("StrConv", targetText => { var s = Strings.StrConv(targetText, VbStrConv.Wide, 0x411); s = Strings.StrConv(s, VbStrConv.Narrow, 0x411); return(s); }), new Pair <string, Func <string, string> >("Kanaxs", targetText => { var s = Kana.ToZenkaku(targetText); s = Kana.ToHankaku(s); return(s); }), new Pair <string, Func <string, string> >("Kanaria", targetText => { return(UcsString.From(targetText) .Wide() .Narrow() .ToString()); }), }); }
private void Init(IEnumerable <KanaCharacter> kana) { int x = 0; int y = 0; foreach (var k in kana) { if (k != null) { Kana.Add(new KanaVM(this, CodePoint.FromString(k.Kana), k.Romaji, x, y)); } else { Kana.Add(new KanaVM(this, null, null, x, y)); } x++; if (x == 5) { x = 0; y++; } } Width = x == 0 ? y : y + 1; Height = 5; var contents = Kana.OrderBy(k => k.X * Width + -k.Y).ToList(); Kana.Clear(); Kana.AddRange(contents); }
public async Task <IActionResult> Edit(int id, [Bind("ID,Pronunciation,Hiragana,Katakana")] Kana kana) { if (id != kana.ID) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(kana); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!KanaExists(kana.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(kana)); }
public static string toHiragana(string s) { s = Kana.ToHiragana(s); s = toNormalizedHyphen(s); return(s); }
public void Wagahai_Katakana_HankakuZenkaku_Test() { Bench(ExampleText.WAGAHAI, 10, new[] { new Pair <string, Func <string, string> >("StrConv", targetText => { var s = Strings.StrConv(targetText, VbStrConv.Katakana, 0x411); s = Strings.StrConv(s, VbStrConv.Narrow, 0x411); return(Strings.StrConv(s, VbStrConv.Wide, 0x411)); }), new Pair <string, Func <string, string> >("kanaxs", targetText => { var s = Kana.ToKatakana(targetText); s = Kana.ToHankakuKana(s); return(Kana.ToZenkakuKana(s)); }), new Pair <string, Func <string, string> >("Kanaria", targetText => { return(UcsString.From(targetText) .Katakana() .Narrow() .Wide() .ToString()); }), }); }
public static Yyyymm Parse(string yyyymm, string timeZoneId) { if ("今月".Equals(yyyymm)) { var tz = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); var nowTz = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz); return(Yyyymm.FromDate(nowTz)); } else if ("先月".Equals(yyyymm)) { var tz = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); var nowTz = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz); return(Yyyymm.FromDate(nowTz.AddMonths(-1))); } int year = 0; int month = 0; var hankaku = Kana.ToHankaku(yyyymm); var buf = hankaku.Split('/', '-', '年', '月', '日'); try { if (buf?.Length == 2 || buf?.Length == 3) { year = int.Parse(buf[0]); month = int.Parse(buf[1]); } else if (hankaku.Length >= 4) { year = int.Parse(hankaku.Substring(0, 4)); month = int.Parse(hankaku.Substring(4, 2)); } else { Trace.WriteLine($"Yyyymm parse invalid length - {yyyymm}"); return(Yyyymm.Empty); } if (!(2000 <= year && year <= 3999)) { Trace.WriteLine($"Yyyymm parse failed - year is out of range {yyyymm}"); return(Yyyymm.Empty); } if (!(1 <= month && month <= 12)) { Trace.WriteLine($"Yyyymm parse failed - month is out of range {yyyymm}"); return(Yyyymm.Empty); } return(new Yyyymm(year, month)); } catch (Exception) { Trace.WriteLine($"Yyyymm parse failed - {yyyymm}"); return(Yyyymm.Empty); } }
public ActionResult DeleteConfirmed(int id) { Kana kana = db.Kana.Find(id); db.Kana.Remove(kana); db.SaveChanges(); return(RedirectToAction("Index")); }
public KanaChartViewModel(MainWindowViewModel mainWindowViewModel, IEnumerable <Kana> kanaList) { _mainWindowViewModel = mainWindowViewModel; _selectedKana = new Observable <KanaChartItemViewModel>(); Kana = kanaList.Select(k => new KanaChartItemViewModel(k)); SelectedKana = Kana.FirstOrDefault(); }
public static string toZenkaku(string s) { s = Kana.ToZenkaku(s); s = KanaEx.ToZenkakuKana(s); s = toNormalizedHyphen(s); return(s); }
public ActionResult Edit([Bind(Include = "ID,Letter,Reading")] Kana kana) { if (ModelState.IsValid) { db.Entry(kana).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(kana)); }
public ActionResult Create([Bind(Include = "ID,Letter,Reading")] Kana kana) { if (ModelState.IsValid) { db.Kana.Add(kana); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(kana)); }
public async Task <IActionResult> Create([Bind("ID,Pronunciation,Hiragana,Katakana")] Kana kana) { if (ModelState.IsValid) { _context.Add(kana); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(kana)); }
// 複数行テキストの追加(改行で文字列分割) public void AppendMultiLineComment(PdfContentByte pdfContentByte, string font, float fontSize, string text, float x, float y, float boxWidth, float boxHeight, int lines, float leading, string orientation = HORIZONTAL, float scale = 100f, int cyan = 0, int magenta = 0, int yellow = 0, int black = 255, int alignment = Element.ALIGN_LEFT) { var bf = BaseFont.CreateFont(font, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); pdfContentByte.SetFontAndSize(bf, fontSize); pdfContentByte.SetHorizontalScaling(scale); pdfContentByte.SetCMYKColorFill(cyan, magenta, yellow, black); char[] separator = new char[] { '\r', '\n' }; string[] comments = text.Split(separator, StringSplitOptions.RemoveEmptyEntries); // 横書きのパターン if (orientation == HORIZONTAL) { HorizontalText.SetMinScale(pdfContentByte, bf, comments, fontSize, boxWidth, scale); // y = y + boxHeight - leading; for (int i = 0; comments.Length > i; i++) { if (i >= lines) { break; } string comment = comments[i]; HorizontalText.ShowTextH(pdfContentByte, x, y, comment, alignment, 0); y -= leading; } } // 縦書きのパターン else { float vScale = VerticalText.GetMinVerticalScaling(comments, fontSize, boxHeight); x = VerticalText.GetAlignedXV(x + boxWidth, fontSize) - leading; y -= fontSize * vScale; pdfContentByte.BeginText(); for (int i = 0; comments.Length > i; i++) { if (i >= lines) { break; } string comment = comments[i]; VerticalText.MakeVerticalLine(pdfContentByte, Kana.ToZenkaku(comment), x, y, fontSize, alignment, vScale, tatechuyoko: true, isShugo: true); x -= leading; } pdfContentByte.EndText(); } }
public void SetNextQuestion() { SelectedKana = null; _answerVisibility.Value = Visibility.Collapsed; _backgroundBrush.Value = null; int questionIndex = _randomGenerator.Next(0, Kana.Count()); _questionKanaItemViewModel.Value = Kana[questionIndex]; _canSelectAnswer.Value = true; }
public string EncodeBlock(char kana) { // Kana result = fHiriganaList.FirstOrDefault(k => k.Character == kana); string s = null; if (result != null) { s = result.Label; } return(s); }
public char DecodeBlock(string block) { // Kana result = fHiriganaList.FirstOrDefault(k => k.Label == block); char c = (char)32; if (result != null) { c = result.Character; } return(c); }
// GET: Kanas/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Kana kana = db.Kana.Find(id); if (kana == null) { return(HttpNotFound()); } return(View(kana)); }
private static string Clean(string text) { var hankaku = Kana.ToHankaku(text); hankaku = hankaku .Replace(Convert.ToChar(0x0A).ToString(), "") .Replace("\0", "") .Replace("\b", "") .Replace("\n", "") .Replace("\r", "") .Replace("\t", "") .Replace("(", "") .Replace(")", "") .Replace(":", "") ; return(_regex.Replace(hankaku, "")); }
public static Hhmm Parse(string hhmm) { try { int hour = 0; int minute = 0; var hankaku = Kana.ToHankaku(hhmm); var buf = hankaku.Split(':', '-', '時', '分', '秒'); if (buf?.Length == 2 || buf?.Length == 3 || buf?.Length == 4) { hour = int.Parse(buf[0]); minute = int.Parse(buf[1]); } if (hhmm.Length >= 4) { hour = int.Parse(hhmm.Substring(0, 2)); minute = int.Parse(hhmm.Substring(2)); } else { return(Hhmm.Empty); } if (!(0 <= hour && hour <= 36)) { Trace.WriteLine($"Hhmm parse failed - hour is out of range {hhmm}"); return(Hhmm.Empty); } if (!(0 <= minute && minute <= 59)) { Trace.WriteLine($"Hhmm parse failed - minute is out of range {hhmm}"); return(Hhmm.Empty); } return(new Hhmm(hour, minute)); } catch (Exception) { Trace.WriteLine($"Hhmm parse failed - {hhmm}"); return(Hhmm.Empty); } }
public Sentence(SentenceDefinition sd) { KanjiKana = sd.KanjiKana; Kana = sd.Kana; var charArray = Kana.ToCharArray(); var charList = new List <char>(charArray); var strList = charList.Select(c => c.ToString()).ToList(); var isSokuon = false; var from = 0; for (int i = 0; i < strList.Count(); i++) { if (i < strList.Count() - 1) //最終文字ならチャンク確定 { if (!isSokuon) { isSokuon = KanaUtils.IsSokuon(strList[i]); if (isSokuon) { from--; continue; } } var chkStr = strList[i] + strList[i + 1]; if (KanaUtils.Henkan.ContainsKey(chkStr)) { from--; continue; } } var chunkStr = ""; for (int j = from; j < 1; j++) { chunkStr = chunkStr + strList[i + j]; } ; ChunkList.Add(new Chunk(chunkStr, isSokuon)); isSokuon = false; from = 0; } }
public void Wagahai_Katakana_Test() { Bench(ExampleText.WAGAHAI, 10, new[] { new Pair <string, Func <string, string> >("StrConv", targetText => { return(Strings.StrConv(targetText, VbStrConv.Katakana, 0x411)); }), new Pair <string, Func <string, string> >("kanaxs", targetText => { return(Kana.ToKatakana(targetText)); }), new Pair <string, Func <string, string> >("Kanaria", targetText => { return(UcsString.From(targetText).Katakana().ToString()); }), }); }
// 1行テキストの追加 public float Append(PdfContentByte pdfContentByte, string text, float x, float y, float boxWidth, float boxHeight, float fontSize, string font, int alignment = 0, int cyan = 0, int magenta = 0, int yellow = 0, int black = 255, float rotation = 0, float scale = 100f, string orientation = HORIZONTAL) { if (orientation == HORIZONTAL) { float ScaledWidth = HorizontalText.SetFontH(pdfContentByte, font, fontSize, text, boxWidth, cyan, magenta, yellow, black, scale); HorizontalText.ShowTextH(pdfContentByte, x, y, text, alignment, rotation); return(ScaledWidth + x); } else { VerticalText.SetFontV(pdfContentByte, font, fontSize, text, cyan, magenta, yellow, black); pdfContentByte.SetHorizontalScaling(100f); float alignedY = VerticalText.ShowTextV(pdfContentByte, Kana.ToZenkaku(text), x, y, fontSize, boxHeight, alignment); return(alignedY); } }
public static IEnumerable <Kana> GetRandomKatakanaWithVoicedConsonants() { Random ran = new Random(); List <Kana> res = new List <Kana>(katakana.Concat(hiraganaVoiced)); int index = 0; Kana temp = null; for (int i = 0; i < res.Count; i++) { index = ran.Next(0, res.Count - 1); if (index != i) { temp = res[i]; res[i] = res[index]; res[index] = temp; } } return(res); }
public static IEnumerable <Kana> GetRandomHiragana() { Random ran = new Random(); List <Kana> res = new List <Kana>(hiragana); int index = 0; Kana temp = null; for (int i = 0; i < res.Count; i++) { index = ran.Next(0, res.Count - 1); if (index != i) { temp = res[i]; res[i] = res[index]; res[index] = temp; } } return(res); }
public JapaneseCalendarLibrary(DateTime originalDate, bool treatFirstYearSpecially, bool makeNumbersFullWidth) { // originalDate is not null because it came from OutSystems as a Date Type value and it doesn't have null DateTime. // The minimum value of Date Type is #1900-01-01# var japaneseCalendar = new JapaneseCalendar(); this.Era = japaneseCalendar.GetEra(originalDate); this.EraText = ERA_TEXTS[this.Era]; this.YearInEra = japaneseCalendar.GetYear(originalDate); this.YearInEraText = (this.YearInEra == 1 && treatFirstYearSpecially ? "元年" : this.YearInEra + "年"); if (makeNumbersFullWidth) { this.YearInEraText = Kana.ToZenkaku(this.YearInEraText); } this.DateText = $"{this.EraText}{this.YearInEraText}{originalDate.Month}月{originalDate.Day}日"; if (makeNumbersFullWidth) { this.DateText = Kana.ToZenkaku(this.DateText); } }
//------------------------------------------------------------------------ // 辞書に見つからなかった語を自動変換する // ハングル <---> カタカナ private WordTable ConvAutoConv(WordTable wt) { if (wt.IsTranslated()) { return(wt); // 変換済みなら何もしない } if (!this.sTrans.AutoConv) { return(wt); // AutoConvをoffにしている場合は何もせず抜ける。 } if (KJ_dict.inputIsHangul) { // K-->J方向 if (CodeCheck.IsHangul(wt.word)) { wt.transWord = Hangul.Hangul2Kana(wt.word); } } else { // J-->方向 if (wt.charCategory == CharCategory.Katakana) { // カタカナの場合 wt.transWord = Kana.Kana2Hangul(wt.word); } else { if (wt.charCategory == CharCategory.Hiragana) { // ひらがなの場合 wt.transWord = Kana.Hira2Hangul(wt.word); } } } return(wt); }
private void ShowKana(Kana kana) { if (kana == null) { return; } if (StrokeOrder) { if (IsKatakana) { SignPath = kana.KatakanaPath; SignPathIcon = kana.KatakanaOnlyPath; } else if (IsHiragana) { SignPath = kana.HiraganaPath; SignPathIcon = kana.HiraganaOnlyPath; } else if (IsMixed) { Random rand = new Random(); if (rand.Next(0, 2) == 1) { SignPath = kana.KatakanaPath; SignPathIcon = kana.KatakanaOnlyPath; } else { SignPath = kana.HiraganaPath; SignPathIcon = kana.HiraganaOnlyPath; } } } else { if (IsKatakana) { SignPath = kana.KatakanaOnlyPath; SignPathIcon = kana.KatakanaOnlyPath; } else if (IsHiragana) { SignPath = kana.HiraganaOnlyPath; SignPathIcon = kana.HiraganaOnlyPath; } else if (IsMixed) { Random rand = new Random(); if (rand.Next(0, 2) == 1) { SignPath = kana.KatakanaOnlyPath; SignPathIcon = kana.KatakanaOnlyPath; } else { SignPath = kana.HiraganaOnlyPath; SignPathIcon = kana.HiraganaOnlyPath; } } } DakutenPath = kana.DakutenPath; }
bool NoFurigana(string text, string furigana) => string.IsNullOrEmpty(furigana) || text == furigana || Kana.IsHiragana(text) || Kana.IsKatakana(text);
public override int GetHashCode() { return(5 * Kana.GetHashCode() + 7 * Ego.GetHashCode()); }
// 一行分の縦書きテキストを出力する public static float MakeVerticalLine(PdfContentByte pdfContentByte, string text, float x, float y, float fontSize, int alignment, float vScale, bool tatechuyoko = false, bool isShugo = false) { // index番目の文字を取得 char GetChar(string str, int index) { try { return(str[index]); } catch (IndexOutOfRangeException) { return('_'); } } string zenNum = "0123456789"; string kakkoStart = "(「【『<[〈《〔{"; string kakkoEnd = ")」】』>]〉》〕}"; string rotate = "ー~-:;〜"; string touten = "、。.,.,"; bool asHankaku = false; for (var i = 0; text.Length > i; i++) { char c = text[i]; char prev, next, nextnext; if ((kakkoStart.IndexOf(c) >= 0 || kakkoEnd.IndexOf(c) >= 0 || rotate.IndexOf(c) >= 0) && !isShugo) // 括弧は90度回転させて移動(非集合チラシ) { pdfContentByte.ShowTextAligned(alignment, c.ToString(), 0, -1 * vScale, 1, 0, x + (fontSize / 2), y - (fontSize * vScale / 2), 0); } else if ((kakkoStart.IndexOf(c) >= 0 || kakkoEnd.IndexOf(c) >= 0 || rotate.IndexOf(c) >= 0) && isShugo) // 括弧は90度回転させて移動(集合チラシ) { pdfContentByte.ShowTextAligned(alignment, c.ToString(), 0, -1 * vScale, 1, 0, x + (fontSize / 8), y + (fontSize * vScale * 7 / 8), 0); } else if (touten.IndexOf(c) >= 0) // 読点 { pdfContentByte.ShowTextAligned(alignment, c.ToString(), 1, 0, 0, vScale, x + (fontSize / 2), y + (fontSize * vScale / 2), 0); } else if (zenNum.IndexOf(c) >= 0 && tatechuyoko) // 数字(縦中横の設定) { prev = GetChar(text, i - 1); next = GetChar(text, i + 1); nextnext = GetChar(text, i + 2); if (zenNum.IndexOf(prev) < 0 && zenNum.IndexOf(next) >= 0 && zenNum.IndexOf(nextnext) < 0) { pdfContentByte.ShowTextAligned(alignment, Kana.ToHankaku(c.ToString()), 1, 0, 0, vScale, x - (fontSize / 6), y, 0); pdfContentByte.ShowTextAligned(alignment, Kana.ToHankaku(next.ToString()), 1, 0, 0, vScale, x + (fontSize / 2), y, 0); i++; } else { pdfContentByte.ShowTextAligned(alignment, c.ToString(), 1, 0, 0, vScale, x, y, 0); } } else { pdfContentByte.ShowTextAligned(alignment, c.ToString(), 1, 0, 0, vScale, x, y, 0); } // 半角文字かどうかを判定する next = GetChar(text, i + 1); if (kakkoEnd.IndexOf(c) >= 0 || kakkoStart.IndexOf(next) >= 0 || touten.IndexOf(c) >= 0) { asHankaku = true; } if (asHankaku) { y -= (fontSize * vScale) / 2.0f; } else { y -= fontSize * vScale; } asHankaku = false; } return(y); }
public override void LoadContent() { base.LoadContent(); texture = mainGame.Content.Load<Texture2D>("IjinSelect/NameSelect/kana"); tagWidth = width/12; selectedTag = Kana.あ; //描画領域を計算 tagRect = new Rectangle[10]; for (int i = 0; i < tagRect.Length; i++) { tagRect[i] = new Rectangle(tagWidth + tagWidth * i, 20, tagWidth, tagWidth); } backRect = new Rectangle(tagWidth,20+tagWidth, tagWidth * tagRect.Length , tagWidth*tagRect.Length/2); //偉人の一覧を作成 personList = new ItemList<Person>[10]; for (int i = 0; i < personList.Length; i++) { personList[i] = new ItemList<Person>(mainGame, Person.NameSelectPersons(((Kana)i).ToString()[0]), mainGame.Content.Load<SpriteFont>("Important/meirio_14"), backRect); personList[i].LoadContent(); } //フェードインを有効に fadeIn.isEnabled = true; }
public override void Update() { //タグを次にすすめる if (beforeKeyboardState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.Right) && nowKeyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Right)) { selectedTag += 1; if ((int)selectedTag == 10) { selectedTag = (Kana)0; } } //タグを前に戻す if (beforeKeyboardState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.Left) && nowKeyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Left)) { selectedTag -= 1; if ((int)selectedTag == -1) { selectedTag = (Kana)9; } } //リストを更新 personList[(int)selectedTag].Update(); //フェードアウトする if (beforeKeyboardState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.Enter) && nowKeyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Enter)) { fadeOut.isEnabled = true; } //次の状態(Profile)に移る if (fadeOut.count >= 0.9f) //ちょっとごまかしてみる(;^ω^) { //注目している偉人を変更する mainGame.person = personList[(int)selectedTag].items[personList[(int)selectedTag].selectedIndex]; //人が切り替わるためもう一度コンテンツをロードする mainGame.statusMains[(int)Status.Profile].LoadContent(); mainGame.status = Status.Profile; } base.Update(); }