3

文字列に整数のみが含まれているかどうかを判断する必要があります。組み込み関数isintegerが機能していません。

ループを避けるために、このタスクを文字列のセル配列に適用したいと思います。例えば:

Q = { 'qf5' ; '4' ; 'true' ; 'false' ; '4.00' ; '4E0' ; '4e0' ; '657' }; 

望ましい結果:

integers = 0  1  0  0  0  0  0  1

単一の文字列の場合、醜い回避策を見つけましたが、これが唯一の可能な方法であるとは想像できません。また、セル配列で使用するにはループが必要です。

myString = '4';
integer = uint64( str2double( myString ) );
newString = int2str( integer );
isStringInteger = strcmp(newString,myString);

どの重要な機能が欠けていますか?

4

2 に答える 2

2

文字列整数ではないため、この質問自体は正しくありません。確認したいのは、文字列が整数の表現であるかどうかです。このisinteger関数は、数値変数の実際の内容が整数であるかどうかをチェックするのではなく、データ型が整数型であるかどうかをチェックするため、必要なものでもありません。

私が知る限り、文字列が整数を表しているかどうかをチェックする組み込みの方法はありません。このようなチェックを実装する 1 つの方法は、文字列内のすべての文字が数字を表しているかどうかを確認することです。

isintstr = all(myString >= '0') && all(myString <= '9')

このコードは、10 進数がASCIIと Unicode で順番にエンコードされるという事実を利用しています。

先頭と末尾の空白を許可するには、次を使用します

isintstr = all(strtrim(myString) >= '0') && all(strtrim(myString) <= '9')
于 2013-10-11T13:41:32.280 に答える