2011-09-16 10 views
3

JavaScriptで改行を削除しようとしています。これはInternet Explorerを除くすべてのブラウザで動作します(ie7、ie8でテスト済み)。私は多くの投稿を読んだが、問題の解決策を見つけることができなかった。Javascriptを使ってIEでlinebreaksを削除するには?

Var someText = "Here’s your text.\n It has line breaks that need to be removed.\rUsing Javascript.\r\n"; 

someText = someText.replace(/(\r\n|\n|\r)/gm,""); 

他に何を試すことができますか? *

EDITED * ****

は、ここでより多くのコードと私の問題をよりよく説明:私が何をしようとしています何

function checkLength(fn) { 
    var fn = document.getElementById(fn); 
    var fnb = fn.value; 
    var fnb = fnb.replace(/(\r\n|\n|\r)/gm,""); 
    var len = fnb.length; 
    ... 

計算でありますテキストエリア内の文字数。私はJavascriptとPHPの両方で計算しなければならなかった。そして改行のために、PHPとJavascriptは決して同じ数にはならなかった。改行を削除するときは、Internet Explorer(Javascriptで計算する)を除いて、すべてが有効です。 fnb.replaceはInternet Explorerの文字数を何も変更しないので、改行が正しく削除されないと確信しています。他のすべてのブラウザでは問題ありませんが、javascriptで改行を取り除いた後にカウンタの違いを見ることができます。つまり、それは事を変えない。私は以下のように、あなたの提案と、行番号を削除する前にchar数を試してみました。後は同じです。

///////// MY ANSWER /////////////////////////////////// //

function checkLength(fn) { 
    var fn = document.getElementById(fn); 
    var fnb = fn.value; 
    var fnb = fnb.replace(/(\r\n|\n|\r)/gm,""); 
    var len = fnb.length; 
... 

Tomalakは、私のロジックが改善される可能性が言ったように

- JavaScriptの&プログラミングに新しいもののために申し訳ありません。たぶんTomalakは間違いをしないだろうが、私は誰もがそうしていると確信している。私たちは学ぶために間違いを犯さなければなりません。それが働いている必要があり、それは論理的ではなかった場合でも

var fnb = document.getElementById(fn).value; 

Internet Explorerが、私はそれを変更しなければならなかった

var fn = document.getElementById(fn); 
var fnb = fn.value; 

好きではなかったです。それはie以外のすべてのブラウザで動作しました。それはバグです。

これは私が探していた答えでした。

+0

あなたが本当に何が起こっているか教えてくれていないからです)。実際、私の答えで議論している 'Var'の問題以外では、[コードは大丈夫です](http://tom.kera.name/lol.html)ので、すでに持っているものを見ている必要がありますあなたのコードの他の領域で、あなたが間違っていたことを理解してください。 –

+0

これはあなたが尋ねている問題ではありませんが、この正規表現は簡単です: '/ \ r | \ n/gm'。 – jfriend00

+0

@Toamalak:私の投稿を更新しました。プロの人ではないことを申し訳ありません。私はできればいいと思うが、どこかで始めなければならない。 – Mathiew

答えて

1

これを試してみてください。実際には

someText = someText.replace(/[\r\n]+/gm,""); 
+0

これは機能的に元のものとどのように異なっていますか? IEでオリジナルが壊れているのはなぜですか? –

0

は、正規表現は、少なくともIE8.0でうまく動作します。

実際の問題は、varの代わりにVarと書いたことです。 Firefoxはそれを手放すことができますが、IEはそうしません。

+0

私は小文字で試しましたが、それでも動作しません。 – Mathiew

+0

@マシュー:それは私のためにうまく動作します。あなたは何か間違ったことをしたに違いありません。デベロッパーコンソールを破棄して実際のエラーメッセージを表示する時間。 (実際には、あなたが問題を抱えていることを覚悟してください!) –

+0

@Mathiew:IE8でhttp://tom.kera.name/lol.htmlが "うまくいかない"ことを確認してください。 –

0

mフラグは必要ありませんが、スペースで置き換える必要はありません。あなたが「試す」に完全に異なるものを見つけることを試みにすぎを中心に、代わりにあなたの現在のコードは、エラーの原因となっている(と私はあなたが取得していると仮定することができ、なぜうまくしようとしている

someText = someText.replace(/[\r\n]+/g,' '); 
関連する問題