1

プレフィックス検索用に可能な限り高い UTF8 文字を取得する必要があります。

次のようなデータセットがあります。

A
Ba
Bf
C

これで、開始値と終了値を指定してプレフィックス検索を実行できます。

Start: B
End: B* where * should be the highest possible UTF8 character.

Javascriptを使用してプログラムでこれを取得するにはどうすればよいですか?

編集:これはより良い例です:

このプレフィックスを JSON RPC API に送信する必要があります。そのため、JS で実際の比較を行うことはできません。

しかし、B で始まる両方の文字列を一致させたい場合は、

Start: B 
End: B? 

どこ ?可能な最大の UTF8 文字です。

ASCIIならできます"B" + String.fromCharCode(255)が、これはあくまでもASCIIです。私の文字列は UTF8 です。この場合、これは B で始まるすべての可能な文字列と一致しません。

4

5 に答える 5

3

コードによっては、実際の最高の UTF8 コード ポイントが必要ない場合があります。

if ((input >= 'B') && (input < 'C')) { ... }

あなたのためにトリックを行うことができます。

于 2012-06-26T09:56:14.650 に答える
2
const maximumCodePoint = String.fromCodePoint(0x10ffff)

> String.fromCodePoint(0x10ffff + 1)
RangeError: Invalid code point 1114112
于 2017-04-11T18:36:16.740 に答える
0

>比較演算子を使用して、JavaScript で文字列の先頭の UTF コード ポイントを比較できます。だからあなたは使うことができます

search >= "B" && search < "C"

、しかし単純な

search.test(/^B.*/)

また

search.charAt(0) == "B"

それもやるべきです。

于 2012-06-26T10:03:51.423 に答える
0

あなたが望むように私には見えます:

var datas = [
    'A',
    'Bf',
    'Ba',
    'C'
];

// Create an array with char codes prefixed with "B" but it returns
// for the second string. For example, for B*, it returns the char code of *.
var datasB = datas.map( function( data ) {
    if ( data.charAt( 0 ) === 'B' ) {
        return data.substr( 1 ).charCodeAt( 0 );
    }
} ).filter( Boolean );
// The `filter( Boolean )` removes the falsy values (undefined)

// This technique is very efficient to get the maximum value of an array
var max = Math.max.apply( Math, datasB );

配列の最大値を取得する手法については、John Resigからのインスピレーション。

于 2012-06-26T10:17:25.077 に答える
0

範囲を作りたい場合は、 を使用できます\uffff

MyRange("foo", "foo\uffff")

で始まるすべてを検索しますfoo

于 2012-07-18T23:38:04.460 に答える