1

重複の可能性:
Javascript:Unicode文字列が文字で分割されています

タミル語の文字を含むJavaScript文字列があります。それらを個々のUnicode文字に分割する必要があります。splitメソッドは、 http://en.wikipedia.org/wiki/Complex_text_layout複雑なテキストレイアウトを理解しません。

例えば:

"கதிரவன்"でsplit( "")を呼び出すと、次のようになります。

、க、த、ி、ர、வ、ன、்</ p>

私が期待したとき:

க、தி、ர、வ、ன்

文字列からUnicode文字を適切に分割するにはどうすればよいですか?

編集:私はこれらの文字をブラウザ(クロム)でうまくナビゲートできます。このjsをChrome拡張機能で使用しようとしています。ですから、クロム特有の解決策があれば私は大丈夫です。

4

4 に答える 4

3

これは完全に実行可能です。

まず、すべての発音区別符号のような文字をキーとして含むセット/辞書を作成します。これに名前を付けてdiacritics、オブジェクトリテラルだけで実装できます。

var diacritics = {'\u0bbf':true,'\u0bcd':true,...};

次に、これを行います。

var tempList = "கதிரவன்".split('');
var targetList = [];
for(var idx in tempList){
  if(diacritics[tempList[idx]])
    targetList[targetList.length - 1] +=  tempList[idx];
  else
    targetList.push(tempList[idx]);
}

も必要ありませんtempList。strcharをcharごとにループするだけで機能します。

for(var i = 0; i != str.length; ++i){
  var ch = str[i];
  diacritics[ch] ? (targetList[targetList.length - 1] += ch) : targetList.push(ch);
}
于 2012-10-21T13:36:27.360 に答える
1

https://github.com/reyesr/javascript-unicodeのようなUnicodeライブラリを試しましたか?たとえば、句読点や区切り文字のテストなど、Unicodeタイプに関連するメソッドを提供し、それに応じて分割します(使用できなくなります)。 String.split()メソッドだと思いますが)。または、Unicodeテーブルのすべての区切り文字を使用して大きな正規表現を作成し、それを使用してテキストを分割します。ネイティブサポートの欠如については正しいのですが、選択肢が不足しているわけではないと思います。

于 2012-10-22T06:18:01.677 に答える
0

私はあなたの最善の解決策が仕事をするためにウェブサービスを構築して使うことになるのではないかと心配しています。必要なデータとアルゴリズムをjavascriptに移植することは、困難なプロジェクトになります。

于 2012-10-21T12:59:21.577 に答える
0

これは、JavaScript自体がユニコードであるにもかかわらず、文字列をASCIIとして解釈するため、JavaScriptから手動で行うのは非常にかさばります。これがオプションではない理由と考えられる回避策については、この投稿を参照してください。

于 2012-10-21T13:04:42.837 に答える