создайте переменную myObj: Object;
;
, а затем <button (click)="activeModal.close(); myObj = someObj">Ok</button>
или, если сложнее, вы можете попробовать
<button (click)="activeModal.close(); onClose()">Ok</button>
и затем создать onClose ( ) метод.
Мой вопрос не только в том, как это сделать в JavaScript, но какие советы и стратегии для выполнения этих видов вещей и в других языках.
То, что вы хотите сделать, это довольно простые манипуляции со строками - помимо отсутствующих разделителей слов, как замечает Барри, хотя это не техническая проблема.
По сути, для современного Unicode-осведомленного В языке программирования (который, как я полагаю, был JavaScript начиная с версии 1.3) нет реальной разницы между японским кана или кандзи и латинской буквой - все они просто символы. А строка - это просто строка символов.
Трудно понять, когда вам нужно конвертировать строки в байты, потому что тогда вам нужно обратить внимание на то, какую кодировку вы используете. К сожалению, многие программисты, особенно носители английского языка, склонны скрывать эту проблему, потому что ASCII является де-факто стандартной кодировкой латинских букв, а другие кодировки обычно стараются быть совместимыми. Если вам нужны только латинские буквы, то вы можете блаженно не знать о кодировке символов, верить, что байты и символы - это одно и то же - и писать программы, которые искажают все, что не является ASCII.
Так что «секрет» Программирование с поддержкой Юникода таково: научитесь распознавать, когда и где строки / символы преобразуются в байты и из них, и убедитесь, что во всех этих местах используется правильная кодировка, т. Е. Та, которая будет использоваться для обратного преобразования и это может закодировать все символы, которые вы используете. UTF-8 постепенно становится стандартом де-факто и обычно должен использоваться там, где у вас есть выбор.
Типичные примеры (не исчерпывающие):
Ваш вопрос мне совершенно неясен.
Однако у меня был некоторый опыт работы с японским языком, поэтому я дам свои 2 цента.
, так как в японских текстах нет разделения слов. (например, пробел), самый важный инструмент, который нам пришлось приобрести, - это распознаватель слов на основе словаря.
Как только вы разбили текст, легче манипулировать им с помощью «обычных» инструментов.
было только 2 инструменты, которые сделали выше, и как побочный продукт, они также работали как tagger (то есть существительное, глагол и т. д.).
edit: всегда используйте юникод при работе с языками.
Если я правильно помню (и я много ослабил год, когда я взял японский, так что я могу ошибаться), замены, которые вы хотите сделать, определяются последним или двумя символами в слове , Принимая ваш первый пример, любой глагол, оканчивающийся на «す», всегда будет иметь «し て», когда спрягается таким образом. Аналогично для む -> ん で. Не могли бы вы установить отображение последнего символа (ов) -> сопряженной формы. Возможно, вам придется учитывать исключения, например все, что сопряжено с xx っ っ.
Что касается переносимости между языками, вам придется реализовывать логику по-разному в зависимости от того, как они работают. Это решение было бы довольно просто реализовать для испанского языка, так как спряжения зависят от того, заканчивается ли глагол на -ar, -er или -ir (с некоторыми глаголами, требующими исключения в вашей логике). К сожалению, это
MeCab (изначально на SourceForge ) потрясающий: он позволяет вам брать текст, например,
「日本語は、とても難しいです。」
и получать всевозможную полезную информацию обратно
kettle:~$ echo 日本語は、難しいです | mecab
日本語 名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
、 記号,読点,*,*,*,*,、,、,、
難しい 形容詞,自立,*,*,形容詞・イ段,基本形,難しい,ムズカシイ,ムズカシイ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS
, которая в основном является подробным части речи, чтения, произношения и т. д. Это также поможет вам проанализировать времена глаголов,
kettle:~$ echo メキシコ料理が食べたい | mecab
メキシコ 名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理 名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ 動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい 助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS
Однако, вся документация на японском языке, и ее немного сложно настроить и выяснить как отформатировать вывод так, как вы хотите. Для ubuntu / debian доступны пакеты и привязки на нескольких языках, включая perl, python, ruby ...
Apt-repos для ubuntu:
deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
Пакеты для установки: Это также поможет вам проанализировать времена глаголов,
kettle:~$ echo メキシコ料理が食べたい | mecab
メキシコ 名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理 名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ 動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい 助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS
Однако вся документация на японском языке, и ее немного сложно настроить и выяснить, как форматировать выходные данные так, как вы этого хотите. Для ubuntu / debian доступны пакеты и привязки на нескольких языках, включая perl, python, ruby ...
Apt-repos для ubuntu:
deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
Пакеты для установки: Это также поможет вам проанализировать времена глаголов,
kettle:~$ echo メキシコ料理が食べたい | mecab
メキシコ 名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理 名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ 動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい 助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS
Однако вся документация на японском языке, и ее немного сложно настроить и выяснить, как форматировать выходные данные так, как вы этого хотите. Для ubuntu / debian доступны пакеты и привязки на нескольких языках, включая perl, python, ruby ...
Apt-repos для ubuntu:
deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
Пакеты для установки:
$ apt-get install mecab-ipadic-utf8 mecab python-mecab
должен сделать трюк, как я думаю.
Другие альтернативы mecab, ChaSen , написанные много лет назад автором MeCab (который, кстати, сейчас работает в Google) и Какаси , который гораздо менее силен.
Я бы определенно постарался избежать использования собственных процедур сопряжения. проблема в том, что для этого потребуются тонны и тонны работы, которую уже сделали другие, и в конечном итоге невозможно охватить все крайние случаи правилами.
MeCab управляется статистически и обучается на множестве данных. Он использует сложную технику машинного обучения, называемую условными случайными полями (CRFs), и результаты действительно довольно хорошие.
Веселитесь с японцами. Я' Я не уверен, насколько хорош ваш японский, но если вам нужна помощь с документами для mecab или что-то еще, не стесняйтесь спрашивать об этом. Кандзи может быть довольно пугающим в начале.
Вам нужно посмотреть на правила грамматики. Иметь массив правил для каждого спряжения. Давайте возьмем 〜 て форму для примера. Псудокод:
def te_form(verb)
switch verb.substr(-1, 1) == "る" then return # verb minus ru plus te
case "る" #return (verb - る) + て
case "す" #return (verb - す)+して
и т. Д. В основном, разбейте его на глаголы типа I, II и III.
Поскольку большинство глаголов в японском языке следуют одному из небольшого набора предсказуемых шаблонов, самый простой и наиболее расширяемый способ сгенерировать все формы данного глагола - это дать глаголу знать, в каком спряжении он должен быть затем напишите функции для генерации каждой формы в зависимости от спряжения.
Псевдокод:
generateDictionaryForm(verb)
case Ru-Verb: verb.stem + る
case Su-Verb: verb.stem + す
case Ku-Verb: verb.stem + く
...etc.
generatePoliteForm(verb)
case Ru-Verb: verb.stem + ります
case Su-Verb: verb.stem + します
case Ku-Verb: verb.stem + きます
...etc.
Неправильные глаголы, конечно, будут иметь специальный регистр.
Некоторые варианты этого будут работать для любого другого достаточно регулярного языка (т. е. не английский).