2016-03-30 5 views
-1

私は、複数のテキストフィールドを持っています。 "märzmärz"。 私は両方の単語を "MärzMärz"に変更したいと思います。ä、ö、üを含む大文字小文字を修正するにはどうすればよいですか?

私は(カスタムキーストロークスクリプトで)このコードを試してみました:

var z=event.value.replace(/[\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff]+/igm, function(m){ return m.toLowerCase();}); 
var x=z.toLowerCase(); 
var y = x.replace(/\b./igm, function(m){ return m.toUpperCase();}); 
event.value = y; 

を結果は次のとおりです。「マルツマルツ」:スクリプトは結果があるので、編集する必要がありますどのように「MARZ MARZ」

おかげでここ

+0

あなたの言葉は何ですか?空白で分かるものは何ですか? – Bergi

+0

@Bergiはい、そうです。しかし、私のテキストフィールドは複数行であるため、私は自分の質問を編集しなければならないと思います。 – aklose

+0

それで '/(^ | \ s +)\ S/g'と' .toUpperCase() 'を単純にマッチさせてみませんか? – Bergi

答えて

0

その常に最初の文字場合は、正規表現のための必要性を全く行っていない:

var start = "märz märz"; 

var text = start.split(' ').map(function(el) { 
    return el.slice(0, 1).toUpperCase() + el.slice(1); 
}).join(' '); 


console.log(text); // "März März" 

JSBin:これについて

https://jsbin.com/sohamo/edit?js,console

+0

正規表現が必要なのは、スペースだけではない場合があります:-) – Bergi

0

何:

var a = "märz märz, april mai oktober\nnovember februar\naugust"; 
 

 
function capitalize(string) { 
 
    var b = string.split(" "); 
 
    b.forEach(function(e, i, a) { 
 
    a[i] = e[0].toUpperCase() + e.slice(1); 
 
    if (a[i].indexOf("\n") > 0) { 
 
     a[i] = e[a[i].indexOf("\n") + 1].toUpperCase() + a[i].slice(a[i].indexOf("\n") + 2); 
 
    } 
 
    }); 
 
    return b.join(" "); 
 
} 
 

 
document.write(capitalize(a));
bergiのヒントをもと

+0

新しい行の最初の単語が変更されず小文字のままであるため、ほぼ正しいです。これが解決できれば素晴らしいだろう。 – aklose

+0

私は関数を更新しました。新しい行も現在認識されています。 – John

0

、コードは次のように編集する必要があります。

event.value = event.value.replace(/(^|\s+)\S/g, function(m){ return m.toUpperCase();}); 

コードはまさに私が欲しいものはないこと。

すべての行のすべての単語が大文字になります。

ありがとうございました。

+0

矢印機能付きでさらにコンパクト: 'event.value = event.value.replace(/(^ | \ s +)\ S/g、m => m.toUpperCase())' – John

関連する問題