1. 程式人生 > >如何判斷字串包含的是數字

如何判斷字串包含的是數字

          全為整數,而且第一個數字不為0

字串程式設計是LABVIEW的程式設計難點之一,有的時候,用一整天的時間做一個字串處理的VI是常有的事,尤其是對各類專用裝置特殊的通訊協議和禎結構.


從最簡單的無符號10進位制整數談起

1.無符號DEC整數

比如字串"1234",顯然它包括的全部是數字,而不是字元(如A,B,C等),問題是如何在程式中判定.

無符號10進位制整數只包含0,1..9,因此可以藉助C語言的方法,用ASCII值來判定.0的ASCII是0X30,
1..9 分別是0X31..0X39,通過把字串轉換成U8陣列,U8數組裡儲存的是字元的ASCII值.



LABVIEW中提供了判斷10進位制字元的節點,IS DEC DIGIT?,用它可以簡化程式,同時它是個多型的VI,LABVIEW專門有一個例子程式說明它的使用方法,需要說明的是對於一個字串,它只判斷第一個字元.


看看它接受的輸入型別.



因此,更簡單地判斷10進位制無符號整數的方法如下圖所示:



同理,LABIVEW同時提供了判斷16進位制,8禁止的節點,因此可以方便地利用上面的方法判斷是否是16進位制和8進位制的數字字串.

LABVIEW沒有提供判斷二進位制字串的方法,不過只需要把上面的0X39改成0X31就可以判斷是否是二進位制字串.

2.無符號浮點數的判定

 無符號的浮點數,比如1.234與無符號整數比較,只需要判定是否包含小數點就可以了,另外有的整數用逗號表示千位分割符號,也可以採用類似的方法判定.



3.LABVIEW特殊型別表示方法
LABVIEW有幾種數值表示方法


這樣判斷起來就非常複雜,需要包括+ - E K M等的判斷.


下面提供一種通用的判斷方法,雖然通用,相應效率也比較低,如果知道確切格式,用上面的方法比較合適

可以直接判斷+,-,科學記數法,不支援SI,逗號等