JavaScriptで文字列置換を行って「9.61」を「9:61」に変換するにはどうすればよいですか?


275

コード行を考える

var value = $("#text").val();

そしてvalue = 9.61、私はに変換9.61する必要があり9:61ます。ここでJavaScript置換関数を使用するにはどうすればよいですか?


29
これはjQueryとは関係ありませんが、単純な古いjavascriptと関係があることに注意してください。
Ikke

1
同様の問題があります。JavaScriptに「var」変数があり、その中の文字列/文字を置き換えたい。私はこのコードを試しました:var myObject = "my%dynamic%value \ n"; myObject = myObject.replace( "%"、 "")。replace( "\ n"、 ""); また、myObject = myObject.replace( '%'、 '')。replace( '\ n'、 '');も試しました。replaceは既知の関数ではないというエラーが表示されます
Balaji Birajdar

上記の問題の正確なエラーメッセージは「Microsoft JScriptランタイムエラー:オブジェクトはプロパティまたはメソッド 'replace'をサポートしていません」
Balaji Birajdar

回答:


539

次のようにします。

var value = $("#text").val(); // value = 9.61 use $("#text").text() if you are not on select box...
value = value.replace(".", ":"); // value = 9:61
// can then use it as
$("#anothertext").val(value);

jQueryの現在のバージョンを反映するように更新されました。また、これと同じ状況に最適な答えがたくさんあります。あなたは、開発者として、どちらがどちらであるかを知る必要があります。

すべての出現箇所を置き換える

一度に複数の文字を置き換えるには、次のようなものを使用しますname.replace(/&/g, "-")。ここでは、すべての&文字をに置き換えてい-ます。g「グローバル」を意味します

-エラーを回避するために角括弧を追加する必要がある場合があります-title.replace(/[+]/g, " ")

クレジットvissuおよびDante Cullari


6
私はそれを試しましたが、value.replaceが関数ではないためエラーが発生しました:(
Nisanth Kumar

thephpdeveloperはそれを正しくするために何かを追加しました...それはそれを行うべきです...上記の編集を参照してください
Reigel

7
一度に複数の値を置き換えようとすると、これは機能しません。:(
vissu

56
一度に複数の文字を置き換えるには、次のようなものを使用しますname.replace(/&/g, "-")。ここでは、すべての「&」文字を「-」に置き換えています。「g」は「グローバル」を意味します。
12

9
注-エラーを回避するために角括弧を追加する必要がある場合がありますtitle.replace(/[+]/g, " ")
Dante Cullari 2013

67

おそらくこれを行う最もエレガントな方法は、1つのステップで実行することです。を参照してくださいval()

$("#text").val(function(i, val) {
  return val.replace('.', ':');
});

に比べ:

var val = $("#text").val();
$("#text").val(val.replace('.', ':'));

ドキュメントから:

.val( function(index, value) )

function(index、value)設定する値を返す関数。

このメソッドは通常、フォームフィールドの値を設定するために使用されます。以下のため <select multiple="multiple"> の要素、複数のアレイに通過させることによって選択することができます。

この.val()メソッドを使用すると、関数を渡して値を設定できます。jQuery 1.4以降、関数には2つの引数、現在の要素のインデックスと現在の値が渡されます。

$('input:text.items').val(function(index, value) {
  return value + ' ' + this.className;
});

この例では、文字列「items」をテキスト入力の値に追加します。

これにはjQuery 1.4以降が必要です。


しかし、私がそれを見ると、男var valueはあなたが提案したようなテキストボックスの値ではなくを変更したいだけです
Reigel

41

jQueryのメソッドチェーンが大好きです。単に行う...

    var value = $("#text").val().replace('.',':');

    //Or if you want to return the value:
    return $("#text").val().replace('.',':');

17
これは実際にはjqueryチェーニングとは関係ありません。呼び出した後は.val()、通常の文字列です。
zerkms 2013

19

シンプルなワンライナー:

$("#text").val( $("#text").val().replace(".", ":") );

1
これは、値が文字列の場合にのみ機能します...また、$("#text")そこで2回呼び出すことはお
勧めし

OPはまた、彼が$("#text"):) の値を置き換えることを望んでいることを明記していませんでした
Reigel

コメント1 ...間違っています。コメント2 ...彼の質問の論理について考えてください。指定する必要はありません。
VIDesignz

それを証明してください、そして日付を付けて覚えてくださいJan 27 '10 at 10:16
Reigel

あなたも、良い習慣を知らない..あなたはこれを読みたいかもしれません... stackoverflow.com/questions/3230727/...
Reigel

6

通常のJavaScript関数で実行できますreplace()

value.replace(".", ":");

3
私が何かを逃したかどうかはわかりませんが、値はテキストボックスから取得されるため、文字列noですか?jsfiddle.net/xMBuAの
Anders

4

replaceなどのJavaScript関数を使用でき、jQueryコードを角かっこで囲むことができます。

var value = ($("#text").val()).replace(".", ":");

3
$("#text").val(function(i,v) { 
   return v.replace(".", ":"); 
});

1
(9.61 + "").replace('.',':')

または、9.61すでに文字列の場合:

"9.61".replace('.',':')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.