3

JavaScript と正規表現は初めてです。テキスト ドキュメントを 1 行あたりの特定の文字数に自動的にフォーマットするか、単語の前に「\r」を付けようとしています。

これは、多くのテキスト エディターに見られる Wordwrap と機能的に似ています。

例えば。1 行に 10 文字が必要です

原文:私の名前はデイビー・ブルーです。

変更:私の名前は \ris Davey \rBlue です。

10 番目の文字が単語の場合、その単語全体が新しい行に配置されます。

次はある程度 /.{1,10}/ で動作するはずだと思います (これで 10 文字が見つかるはずですよね?)

残りはどうしようか迷っています。

助けてください。

4

4 に答える 4

13

基本的

 text = text.replace(/.{1,10} /g, "$&\n")

「\r」ではなく「\n」を意味していたと確信しています

于 2010-02-09T21:27:57.073 に答える
3

正規表現である必要がありますか?私はこのようなことをします:

var str = "My name is Davey Blue.",
    words = str.split(/(\s+)/);
for (var i=0,n=0; i<words.length; ++i) {
    n += words[i].length;
    if (n >= 10) {
        words[i] = "\n" + words[i];
        n = 0;
    }
}
str = words.join("");
于 2010-02-09T21:23:49.273 に答える
1

これは、正規表現でトリックを行います。

myString.replace(/((\w|\s){0,9}\s|\w+\s|$)/g, "$1\r")

(N が目的の行の長さである場合は、"9" を N-1 に置き換えます)

文字列の各位置で、この順序で次のことを試みます:
1. 最大 9 文字まで貪欲に (= できるだけ多く) 一致させようとし、その後にスペースを置きます (したがって、スペースで終わる合計最大 10 文字)
2. これが失敗した場合 (10 文字未満の単語が見つからなかったため)、1 つの単語 (単語の長さに関係なく) とスペースに一致します。の後に \r を挿入し
ます 3. 文字列の末尾に一致し、\r を挿入します

于 2010-02-09T21:44:45.693 に答える
0

正規表現があなたのためにこれを行うとは思わない。私はjavascriptワードラップをグーグルで検索します、誰かがあなたのためにこれを行うためのライブラリを書いたと確信しています

于 2010-02-09T21:23:12.487 に答える