JavaScriptで文字列の最初の整数を取得します
-
03-07-2019 - |
質問
ループ内に文字列があり、ループごとに次のようなテキストが入力されます。
"123 hello everybody 4"
"4567 stuff is fun 67"
"12368 more stuff"
文字列のテキストまでの最初の数字のみを取得したいのですが、もちろん長さはわかりません。
事前に感謝します!
解決
番号が文字列の先頭にある場合:
("123 hello everybody 4").replace(/(^\d+)(.+$)/i,'$1'); //=> '123'
文字列のどこかにある場合:
(" hello 123 everybody 4").replace( /(^.+)(\w\d+\w)(.+$)/i,'$2'); //=> '123'
そして文字間の数字の場合:
("hello123everybody 4").replace( /(^.+\D)(\d+)(\D.+$)/i,'$2'); //=> '123'
[補遺]
文字列内のすべての数値に一致する正規表現:
"4567 stuff is fun4you 67".match(/^\d+|\d+\b|\d+(?=\w)/g); //=> ["4567", "4", "67"]
結果の配列を数値の配列にマッピングできます:
"4567 stuff is fun4you 67"
.match(/^\d+|\d+\b|\d+(?=\w)/g)
.map(function (v) {return +v;}); //=> [4567, 4, 67]
フロートを含める:
"4567 stuff is fun4you 2.12 67"
.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g)
.map(function (v) {return +v;}); //=> [4567, 4, 2.12, 67]
文字列に数字が含まれていない可能性がある場合は、次を使用します。
( "stuff is fun"
.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
.map(function (v) {return +v;}); //=> []
したがって、文字列の開始番号または終了番号を取得するには、 4567 stuff is fun4you 2.12 67"
// start number
var startingNumber = ( "4567 stuff is fun4you 2.12 67"
.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
.map(function (v) {return +v;}).shift(); //=> 4567
// end number
var endingNumber = ( "4567 stuff is fun4you 2.12 67"
.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
.map(function (v) {return +v;}).pop(); //=> 67
他のヒント
var str = "some text and 856 numbers 2";
var match = str.match(/\d+/);
document.writeln(parseInt(match[0], 10));
文字列が数字で始まる場合(空白が前にある場合があります)、単純な parseInt(str、10)
で十分です。
parseInt
は、先頭の空白をスキップします。
08
のような文字列は 0
(ほとんどの実装では parseInt
に変換されるため、 10
が必要です。 0
で始まる数字を8進数と見なします)。
intが必要な場合は、 parseInt(myString、10)
のみ。 ( 10
はベース10を意味します。それ以外の場合、JavaScriptは8や16などの異なるベースを使用しようとする場合があります。)
正規表現を使用:
var re = new RegExp(/^\d+/); //starts with digit, one or more
var m = re.exec("4567 stuff is fun 67");
alert(m[0]); //4567
m = re.exec("stuff is fun 67");
alert(m); // null
この replace
メソッドと単純な正規表現( [^ \ d]。*
):
'123 your 1st string'.replace( /[^\d].*/, '' );
// output: "123"
最初の数字のないものすべてを削除。
所属していません StackOverflow