• '使用下面提供给你的...，还有括号，^乘幂，其优先级与*/相同，这是使用该函数需要注意的地方；!阶乘 '自己试试就知道怎么回事了！ 转载于:https://www.cnblogs.com/zlmlovem/archive/2010/11/30/1892031.html

'使用下面提供给你的函数可以做到这点！
'先定义2个结构Parent和Plus，把这2个定义放在代码段最前面
Private Type Parent
s As String
value As Double
End Type
Private Type Plus
s As String
value As Double
End Type

'下面是实现此功能的函数的定义，比较长
Public Function ValueOfExpression(ByVal Express As String) As Double
Dim Pa() As Parent, ParNum As Integer, Ps() As Plus, OperNum As Integer
Dim str0 As String

'按括号分解表达式 Express:Begin-----/*
Dim lenExp As Integer, Lenstr1 As Integer, i As Integer, j As Integer, k As Integer, str1 As String, str2 As String, intPar As Integer
Dim intStart As Integer, intEnd As Integer
lenExp = Len(Express)
For i = 1 To lenExp
If Mid(Express, i, 1) = "(" Then intPar = intPar + 1
Next
ParNum = intPar
ReDim Pa((intPar / 10 + 1) * 10)
For i = 1 To intPar
If intPar < 1 Then Exit For
For j = 1 To lenExp
If Mid(Express, j, 1) = ")" Then
str1 = Mid(Express, 1, j - 1)
Exit For
End If
Next
Lenstr1 = Len(str1)
For k = 1 To Lenstr1
If Mid(str1, Lenstr1 + 1 - k, 1) = "(" Then
Pa(i).s = Mid(str1, Lenstr1 + 2 - k)
Exit For
End If
Next
Express = Mid(Express, 1, Lenstr1 - k) & Chr(128) & CStr(i) & Mid(Express, j + 1)
lenExp = Len(Express)
Next
Pa(0).s = Express
'*/-----End

'按加减号进一步分解：Begin-----/*
Dim n As Integer, strLeft As String
For i = 0 To ParNum
k = 0
For j = 1 To Len(Pa(i).s)
str1 = Mid(Pa(i).s, j, 1)
If str1 = "+" Or str1 = "-" Then k = k + 1
Next
If k > OperNum Then OperNum = k
Next
ReDim Ps(ParNum, OperNum)
For i = 0 To ParNum
strLeft = Pa(i).s: n = 0: str2 = ""
Do
If Len(strLeft) = 0 Then Exit Do
For j = 1 To Len(strLeft)
str1 = Mid(strLeft, j, 1)
If str1 = "+" Or str1 = "-" Then
Ps(i, n).s = str2 & Mid(strLeft, 1, j - 1)
n = n + 1
str2 = IIf(str1 = "-", str1, "")
strLeft = Mid(strLeft, j + 1)
Exit For
End If
If j = Len(strLeft) Then
Ps(i, n).s = str2 & strLeft: j = 0
Exit For
End If
Next
Loop Until j = 0
Next
'*/-----End

'计算最后分成的多个简单表达式的值的总和,即表达式 Express 的值
Dim Total As Double, value As Double
For i = 1 To ParNum + 1
If i = ParNum + 1 Then i = 0
Total = 0
For j = 0 To OperNum
Express = Ps(i, j).s: value = 0
Dim lasti As Integer, operator As String
lenExp = Len(Express): lasti = 0: operator = ""
For k = 1 To lenExp
str0 = Mid(Express, k, 1)
If InStr("*/^", str0) > 0 Or k = lenExp Then
If k = lenExp Then k = k + 1
str1 = Mid(Express, lasti + 1, k - 1 - lasti)
Dim sign As Integer, Valstr1 As Double
If Mid(str1, 1, 1) = "-" Then
sign = -1
str1 = Mid(str1, 2)
Else
sign = 1
End If
n = InStr(1, "/sin" & Chr(128) & "/cos" & Chr(128) & "/tan" & Chr(128) & "/abs" & Chr(128) & "/atn" & Chr(128) & "/exp" & Chr(128) & "/int" & Chr(128) & "/fix" & Chr(128) & "/sgn" & Chr(128) & "/sqr" & Chr(128) & "/", "/" & Mid(str1, 1, 4) & "/")
If n > 0 Then
Valstr1 = Choose((n + 4) / 5, Sin(Pa(Val(Mid(str1, 5))).value), Cos(Pa(Val(Mid(str1, 5))).value), Tan(Pa(Val(Mid(str1, 5))).value), Abs(Pa(Val(Mid(str1, 5))).value), Atn(Pa(Val(Mid(str1, 5))).value), Exp(Pa(Val(Mid(str1, 5))).value), Int(Pa(Val(Mid(str1, 5))).value), Fix(Pa(Val(Mid(str1, 5))).value), Sgn(Pa(Val(Mid(str1, 5))).value), Sqr(Pa(Val(Mid(str1, 5))).value))
Else
n = InStr(1, "/lg" & Chr(128) & "/ln" & Chr(128) & "/", Mid(str1, 1, 3))
If n > 0 Then
Valstr1 = Choose((n + 3) / 4, Log(Pa(Val(Mid(str1, 4))).value) / Log(10), Log(Pa(Val(Mid(str1, 4))).value))
Else
If Mid(str1, 1, 1) = Chr(128) Then
Valstr1 = Pa(Val(Mid(str1, 2))).value
ElseIf Right(str1, 1) = "!" Then
If Val(str1) = 0 Then
Valstr1 = 1
Else
Valstr1 = 1
For n = 1 To Val(str1)
Valstr1 = Valstr1 * n
Next
End If
Else
Valstr1 = Val(str1)
End If
End If
End If
Valstr1 = Valstr1 * sign
Select Case operator
Case ""
value = Valstr1
Case "*"
value = value * Valstr1
Case "/"
value = value / Valstr1
Case "^"
value = value ^ Valstr1
End Select
lasti = k: operator = str0
End If
Next
Ps(i, j).value = value
Total = Total + Ps(i, j).value
Next
Pa(i).value = Total
If i = 0 Then Exit For
Next
ValueOfExpression = Pa(0).value
End Function
'OK，到这里结束了该函数的定义
'使用例子：
'A="5+5+5"
'Print ValueOfExpression(A)

'其它说明：该函数支持很多数学函数如sin、cos、tan等等，如：
'Print ValueOfExpression("sin(1)")
'注意后面要加括号
'该函数支持运算符+-*/^!，还有括号，^为乘幂，其优先级与*/相同，这是使用该函数需要注意的地方；!为阶乘
'自己试试就知道怎么回事了！

转载于:https://www.cnblogs.com/zlmlovem/archive/2010/11/30/1892031.html
展开全文
• VB中的字符串函数比较多,也比较方便,就不一一介绍了.本文主要对字符串相关的转换函数做一些小结.字符转换的函数主要有: Str()和Val()用于字符串和数字的相互转换; Chr()和Asc()用于字符串和AscII码的相互转换; ...

VB中的字符串函数比较多,也比较方便,就不一一介绍了.本文主要对字符串相关的转换函数做一些小结.字符串转换的函数主要有: Str()和Val()用于字符串和数字的相互转换; Chr()和Asc()用于字符串和AscII码的相互转换; Chrw()和Ascw()用于Unicode码和中文的相互转换; Format()函数用途十分广泛的一个函数,功能十分强大.
在这些函数中前两对和Format()函数是我们经常用到的,这里只给出前两对的几个简单例子: (1) MyString = Str(-459.65) ' 返回 "-459.65"。 MyString = Str(459.001) ' 返回 " 459.001"。(2) MyValue = Val(" 2 45 7") ' 返回 2457。 MyValue = Val("24 and 57") ' 返回 24。(3) MyChar = Chr(97) ' 返回 a。 MyChar = Chr(37) ' 返回 %。 (4) MyNumber = Asc("Apple") ' 返回 65。 MyNumber = Asc("a") ' 返回 97。
Format函数功能十分强大,大家可以察看msdn相关说明.本文重点想说一下第三对函数,这是经常被大家忽视的一对函数.在我开发手机短信时,最开始时就是用text模式开发的,后来由于发中文改成pdu模式,pdu模式有三种形式可用:7-bits,8-bits,ucs2.前两种都是表复杂的,涉及到编码函数的设计,这里就不多说了,我用的是ucs2编码,发现只要使用第三对函数就能完成pdu串的编码和解码.这对函数的使用和第二对完全相同,下面举几个例子说明(以下代码从vb的立即窗口里得到): ?ascw("中") 20013 ?ascw("果") 26524 ?ascw("e") 101 ?chrw(101)e?chrw(26589)柝在chrw()和ascw()函数中,对于ASCII仍然和chr()与asc()相同对待.以上只是我对这些函数使用时的一点小结,期望能起到抛砖引玉的作用.

转载于:https://www.cnblogs.com/phzend/p/5585853.html
展开全文
• R语言系列3：高级数据管理此文内容《R语言实战》的笔记，人民邮电出版社出版。从高中电脑课学VB开始，大一课内开始学习C++，到后来大二为了数模学习Matlab，到大三为了搞深度学习自学Python，到研究生之初学习...


R语言系列3：高级数据管理

此文内容为《R语言实战》的笔记，人民邮电出版社出版。
从高中电脑课学VB开始，大一课内开始学习C++，到后来大二为了数模学习Matlab，到大三为了搞深度学习自学Python，到研究生之初学习Stata——选择一门语言对我来说就像是小时候玩冒险岛，到10级的时候是转战士好还是弓箭手好一般的纠结。我查阅了很多B乎的文章，最后觉得可能R比较合适现在的我。
作为从Python转进来R的新手，我把可能会用经常需要用到或经常需要查阅的代码贴上来，主要是为了日后方便查找，就像“字典”一样。推文的顺序与教材不同，为了简洁，我还会删除一些我个人认为不太重要的章节。我还会按照自己的学习进度发布文章，请读者见谅。
本文章仅供学习参考，请勿转载，侵删！

目录
5 高级数据管理
5.2  数值和字符串处理函数
5.2.1  数学函数5.2.2  统计函数5.2.3  概率函数5.2.4  字符处理函数5.2.5  其他实用函数5.4  控制流
5.4.1  循环结构5.4.2  判断结构5.4.3  用户自定义函数5.6  整合与重构
5.6.1  数据集的转置5.6.2  整合数据5.6.3  reshape2包

第5章 高级数据管理
在第4章，我们学习了R中基本的数据处理方法。在第5章，我们主要浏览R中的多种数学、统计和字符处理函数，了解如何自己编写函数来实现数据处理和分析任务，并了解数据的整合和概述方法以及数据集的重塑和重构。
5.2 数值和字符处理函数
R中作为数据处理基石的函数，可以分为数值函数(数学、统计、概率)和字符串处理函数。
5.2.1 数学函数
R中常用的数学函数有：
== 函数 ==             == 描述 ==abs(x)                绝对值sqrt(x)               平方根ceiling(x)            不小于x的最小整数floor(x)              不大于x的最大整数trunc(x)              向0方向取整round(x, digits=n)    将x舍入为指定小数位数signif(x, digits=n)   将x舍入为指定的有效数字位数cos(x),sin(x),tan(x)  三角函数acos(x),asin(x),...   反三角函数cosh(x),sinh(x),...   双曲三角函数acosh(x),...          反双曲三角函数log(x, base=n)        对x取n为底数的对数log(x)                自然对数log10(x)              常用对数exp(x)                自然指数
对数据做变换是这些函数的主要用途。这些函数作用于vector或matrix或data.frame对象会作用于每一个独立的值，见：
V1 = c(1:10)V2 = c(11:20)M = matrix(V1, nrow = 2)D = data.frame(V1, V2)sqrt(V1)
##  [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427##  [9] 3.000000 3.162278
sqrt(M)
##          [,1]     [,2]     [,3]     [,4]     [,5]## [1,] 1.000000 1.732051 2.236068 2.645751 3.000000## [2,] 1.414214 2.000000 2.449490 2.828427 3.162278
sqrt(D)
##          V1       V2## 1  1.000000 3.316625## 2  1.414214 3.464102## 3  1.732051 3.605551## 4  2.000000 3.741657## 5  2.236068 3.872983## 6  2.449490 4.000000## 7  2.645751 4.123106## 8  2.828427 4.242641## 9  3.000000 4.358899## 10 3.162278 4.472136
5.2.2 统计函数
常用的统计函数如表所示：
== 函数 ==             == 描述 ==mean(x)                平均值median(x)              中位数sd(x)                  样本标准差 (用n-1)var(x)                 样本方差 (用n-1)mad(x)                 绝对中位数quantile(x, probs)     求分位数range(x)               求值域sum(x)                 求和diff(x, lag=n)         n阶差分min(x)                 最小值max(x)                 最大值scale(x,               数据中心化(center=TRUE)      cener=TRUE,      数据标准化(center和scale=TRUE)      scale=TRUE)
上面的函数一般会有na.rm选项，当na.rm=TRUE时会排除缺失值进行计算。具体请参考help(·)。
一个具体的应用是：
x mean(x)
## [1] 4.5
sd(x)
## [1] 2.44949
如果冗余地写，那么有：
x n meanx css sdx meanx
## [1] 4.5
sdx
## [1] 2.44949
5.2.3 概率函数
概率函数通常用来生成特征已知的模拟数据，以及在用于编写的统计函数中计算概率值。
在R中，概率函数形如：

[dpqr]分布名缩写()

其中：
d = 概率密度函数(pdf, density的d)p = 累积分布函数(cdf, 给定分位点求概率p(X<=x)的p)q = 分位数函数(quantile function的q，给定概率p求分位数数，是p的反函数)r = 生成随机数(random)
例如：
x pdf cdf quan layout(matrix(c(1,2,3,3), 2, 2))plot(x, pdf, title("dnorm"))plot(x, cdf, title("pnorm"))plot(pretty(c(0,1), 100), quan, title("qnorm"))

另外：
# 位于 z=1.96 左侧的标准正态分布pdf下方的面积是多少(知道分位点求概率)pnorm(1.96)
## [1] 0.9750021
# 标准正态分布的0.9分位点值为多少(知道概率求分位点)qnorm(0.9750021)
## [1] 1.96
关于画图的命令会在下一篇推文介绍。
1.关于设定随机种子
每次生成为随机数的时候，函数都会使用一个不同的种子，因此也会产生不同的结果。你可以通过set.seed()指定某个种子，让随机的结果可以重现(reproducible)，见：
runif(5)
## [1] 0.9580880 0.9346797 0.5693708 0.6829771 0.6390400
runif(5)
## [1] 0.2776539 0.6784761 0.8737694 0.8826680 0.9218422
set.seed(1234)runif(5)
## [1] 0.1137034 0.6222994 0.6092747 0.6233794 0.8609154
set.seed(1234)runif(5)
## [1] 0.1137034 0.6222994 0.6092747 0.6233794 0.8609154
2.多元正态数据
在模拟研究和蒙特卡洛方法中，你经常需要获取来自给定均值向量和协方差的多元正态分布的数据。
MASS包中的mvrnorm()可以让这个问题变得容易，请先安装MASS包：

install.packages("MASS")

然后可以使用：
library(MASS)
## Warning: package 'MASS' was built under R version 4.0.2
options(digits = 3)set.seed(1234)mean sigma                   6721.2, 4700.9, -16.5,                  -47.1, -16.5, .3),                 nrow = 3, ncol = 3)mydata mydata names(mydata) mydata
##        Y     X1   X2## 1   74.5  90.43 4.16## 2  248.2 196.43 3.46## 3  351.0 236.71 3.15## 4  -56.3   4.26 4.62## 5  299.3 138.24 3.04## 6  291.0 179.52 2.88## 7  151.6 129.12 4.10## 8  148.4 144.53 3.54## 9  147.5 140.93 3.92## 10 161.4   9.96 3.21
5.2.4 字符处理函数
数学和统计函数是用来处理数值型数据的，而字符处理函数可以从文本中抽取需要的数据信息。常见的字符串处理函数有：
== 函数 ==                == 描述 ==nchar(x)                  计算x中的字符数量substr(x,start,end)       提取或替换字符串中的子串grep(pattern,x)           在x中搜索某种模式sub(pattern,              把x中pattern替换为replacement    replacement,    x)strsplit(x, split)        在split处分割向量x的元素paste(...,sep="")         连接字符串，分隔符为sep  toupper(x)                大写转换tolower(x)                小写转换
具体的函数形式请参考help文档。
5.2.5 其他实用函数
== 函数 ==          == 描述 ==length(x)           对象x的长度seq(from,to,by)     生成从from到to间隔为by的序列rep(x,n)            重复x序列n次cut(x,n)            将连续型变量x分割为有n个水平的因子pretty(x,n)         将连续变量x均匀划分为n个区间cat(...,            连接...中的对象，并输出到屏幕或file中    file="myfile",    append=FALSE)
使用上面的函数时，请先查看help获取详细信息。
另外，字符串里面该可以使用以下转义字符：
== 字符 ==   == 描述 ==\n           换行符(回车)\t           制表符(tab)\'           单引号\b           退格可以在Console输入 ?Quotes 了解更多
例如：
name cat("Hello", name, "\b.\n", "Isn\'t R", "\t", "GREAT?\n")
## Hello Bob .##  Isn't R 	 GREAT?
在这里，使用\b是因为cat在连接对象时，每个对象都会用空格分开。句号和最后一个单词之间不需要空格，所以先用\b再输入.消除不要的空格。

5.4 控制流
在这里介绍控制流，即判断和循环结构。
5.4.1 循环结构
1. for循环
用for循环重复执行语句，知道某个变量的值不在包含在序列seq中为止，语法是：
for (var in seq) {statement}
例如：
for (i in 1:3) {print("Hello world!")}
## [1] "Hello world!"## [1] "Hello world!"## [1] "Hello world!"
2. while循环
while循环地重复执行一条语句，知道条件不为真为止，语法是：
while (cond) {statement}
例如：
i while (i>0) {print("Hello world"); i 
## [1] "Hello world"## [1] "Hello world"## [1] "Hello world"
5.4.2 判断结构
1. if-else 结构
语法为：
if (cond) {statement}if (cond) {statement1} else {statement2}
2. ifelse 结构
语法是：
ifelse(cond, statement1, statement2)
如果cond为真，那么执行statement1，否则执行statement2。例如：
ifelse(1>2, {"1更大"}, {"2更大"})
## [1] "2更大"
如果程序的行为是二元的，或者希望input和output均为向量时，尽量使用ifelse结构
3. switch结构
语法是：
switch(expr, ...)
其中，...表示与expr的各种输出值绑定的语句。看下面的代码就一目了然了：
fellings for (i in fellings){  print(    switch (i,      happy   = "I am glad you are happy!",      afraid  = "There is nothing to fear.",      sad     = "Cheer up!",      angry   = "Calm down now."    )  )}
## [1] "Cheer up!"## [1] "There is nothing to fear."
5.4.3 用户自编函数
R最大的优点之一就是用户可以自行添加函数。一个函数的基本结构的语法是：
myfunction   statements  return(object)}
函数的对象只能在内部使用，返回的对象的数据类型是任意的，从标量到列表都可以。比如：
judge   return(ifelse(num1>num2, num1, num2))}judge(4,100)
## [1] 100

5.6 整合与重构
R提供了很多方法用来整合(aggregate)和重构(reshape)数据。后面将使用在R基本安装中的mtcars数据框：
mtcars[1:3,1:3]
##                mpg cyl disp## Mazda RX4     21.0   6  160## Mazda RX4 Wag 21.0   6  160## Datsun 710    22.8   4  108
5.6.1 数据集的转置
转置即反转行和列，直接使用t()就可以直接对一个矩阵或一个数据框进行转置了。对于数据框，行名将变成列名。如果是对向量进行t()函数，那么第一次t()会把向量变成一维矩阵，第二次t(t(·))才会转置。例如：
V class(V)
## [1] "integer"
class(t(V))
## [1] "matrix" "array"
M t(M)
##      [,1] [,2]## [1,]    1    2## [2,]    3    4## [3,]    5    6
t(mtcars[1:3,1:3])
##      Mazda RX4 Mazda RX4 Wag Datsun 710## mpg         21            21       22.8## cyl          6             6        4.0## disp       160           160      108.0
5.6.2 整合数据
在R中使用一个或多个by和一个预先定义好的函数来折叠(collapse)数据是比较容易的，语法是：
aggregate(x, by=list(...), FUN)
其中x是待折叠的对象；by是一个变量名组成的列表；FUN是预先定义好的用来计算描述性统计量的标量函数。
例如，我们根据气缸数(cyl)和档位数(gear)整合mtcars数据，并返回个数值型变量的均值：
options(digits = 3)attach(mtcars)aggdata aggdata
##   Group.1 Group.2  mpg cyl disp  hp drat   wt qsec  vs   am gear carb## 1       4       3 21.5   4  120  97 3.70 2.46 20.0 1.0 0.00    3 1.00## 2       6       3 19.8   6  242 108 2.92 3.34 19.8 1.0 0.00    3 1.00## 3       8       3 15.1   8  358 194 3.12 4.10 17.1 0.0 0.00    3 3.08## 4       4       4 26.9   4  103  76 4.11 2.38 19.6 1.0 0.75    4 1.50## 5       6       4 19.8   6  164 116 3.91 3.09 17.7 0.5 0.50    4 4.00## 6       4       5 28.2   4  108 102 4.10 1.83 16.8 0.5 1.00    5 2.00## 7       6       5 19.7   6  145 175 3.62 2.77 15.5 0.0 1.00    5 6.00## 8       8       5 15.4   8  326 300 3.88 3.37 14.6 0.0 1.00    5 6.00
其中，Group.1表示气缸数(4、6、8)；Group.2表示档位数(3、4、5)。这里返回的列表表示，
平均来看，有4个气缸，3个档位的的车型每加仑汽油行驶英里数(mpg)为21.5
你也可以在by=list()中指定变量的名称，比如：
options(digits = 3)attach(mtcars)
## The following objects are masked from mtcars (pos = 3):## ##     am, carb, cyl, disp, drat, gear, hp, mpg, qsec, vs, wt
aggdata aggdata
##   Group.cyl Group.gears  mpg cyl disp  hp drat   wt qsec  vs   am gear carb## 1         4           3 21.5   4  120  97 3.70 2.46 20.0 1.0 0.00    3 1.00## 2         6           3 19.8   6  242 108 2.92 3.34 19.8 1.0 0.00    3 1.00## 3         8           3 15.1   8  358 194 3.12 4.10 17.1 0.0 0.00    3 3.08## 4         4           4 26.9   4  103  76 4.11 2.38 19.6 1.0 0.75    4 1.50## 5         6           4 19.8   6  164 116 3.91 3.09 17.7 0.5 0.50    4 4.00## 6         4           5 28.2   4  108 102 4.10 1.83 16.8 0.5 1.00    5 2.00## 7         6           5 19.7   6  145 175 3.62 2.77 15.5 0.0 1.00    5 6.00## 8         8           5 15.4   8  326 300 3.88 3.37 14.6 0.0 1.00    5 6.00
5.6.3 reshape2包
reshape2包是一套重构和整合数据集的万能工具，但用起来有点复杂。我们首先要安装reshape2包：
install.packages("reshape2")
然后用下面的例子来简要介绍reshape2包。
ID Time X1 X2 mydata mydata
##   ID Time X1 X2## 1  1    1  5  6## 2  1    2  3  5## 3  2    1  6  1## 4  2    2  2  4
1. 融合
数据集的融合是将其重构为这样的格式：

每个测量变量独占一行，行中带有唯一确定这个测量所需的标识符变量

上面的mydata可以使用下面的代码进行重构：
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.0.2
md md
##   ID Time variable value## 1  1    1       X1     5## 2  1    2       X1     3## 3  2    1       X1     6## 4  2    2       X1     2## 5  1    1       X2     6## 6  1    2       X2     5## 7  2    1       X2     1## 8  2    2       X2     4
注意，必须指定唯一确定每个变量所需的变量(在这里是ID和Time)，而表示测量变量名的变量(X1, X2)将由程序为你自动创建。
2. 重构
使用dcast()命令重构融合后的数据，并使用你提供的一个公式和一个(可选的)用于整个数据的函数将其重构，调用的语法是：
newdata 
在这里，md是已经融合的数据；formula描述了想要的最后结果；fun.aggregate是数据整合函数。其中，formula的格式为
rowvar1 + rowvar2 + ... ~ colvar1 + colvar2 + ...
其中，rowvar1 + rowvar2 + ...定义了行标签，以确定各行的内容；colvar1 + colvar2 + ...则列表标签，定义了各列的内容，比如：
dcast(md, ID+Time~variable)
##   ID Time X1 X2## 1  1    1  5  6## 2  1    2  3  5## 3  2    1  6  1## 4  2    2  2  4
dcast(md, ID+variable~Time)
##   ID variable 1 2## 1  1       X1 5 3## 2  1       X2 6 5## 3  2       X1 6 2## 4  2       X2 1 4


展开全文
• 1、数值转为字符串类型 实际使用的时候，只需要在变量后面加上方法 ToString()即可，甚至有时候不用加ToString()也可以。 例如： Dim aa As Integer = 12 Dim ss As String = aa.ToString ...
版权声明：本文为博主原创文章，转载请在显著位置标明本文出处以及作者网名，未经作者允许不得用于商业目的。 1、数值转为字符串类型 实际使用的时候，只需要在变量后面加上方法 ToString()即可，甚至有时候不用加ToString()也可以。 例如：         Dim aa As Integer = 12         Dim ss As String = aa.ToString
’ss="12"

2、字符串类型转为数值 以下以字符串转为整型为例，先介绍四种方法：

    Sub Main()
Dim a, b, c, d As Integer
Dim s As String

Console.WriteLine("请输入第1个数字：")
a = Integer.Parse(s)
Console.WriteLine("第1个数字：" & a)

Console.WriteLine("请输入第2个数字：")
b = CInt(s)
Console.WriteLine("第2个数字：" & b)

Console.WriteLine("请输入第3个数字：")
c = CType(s, Integer)
Console.WriteLine("第3个数字：" & c)

Console.WriteLine("请输入第4个数字：")
d = Convert.ToInt32(s)
Console.WriteLine("第4个数字：" & d)

Dim sum As Integer
sum = a + b + c + d
Console.WriteLine("总和：" & sum)

End Sub

主要的代码是：
a = Integer.Parse(s)
b = CInt(s)
c = CType(s, Integer)
d = Convert.ToInt32(s)
大家还可以试一下
运行时如下：

由于输入的时候可能输入的不是整数，被误输入了字母等，那么就会引发错误：

为了避免错误，我们可以采用 Integer.TryParse() 方法，如果不能转为整数，那么该方法返回False，
代码如下：
    Sub Main()
Dim a As Integer
Dim s As String

Console.WriteLine("请输入1个整数：")
Do While (Integer.TryParse(s, a) = False)
Console.WriteLine("输入的不是整数，请重新输入：")
Loop
Console.WriteLine("输入的数字是：" & a)
End Sub
代码内提前使用了 Do While...Loop 循环语句，现在大家只需要知道Do While 后面接的语句只要为True 就会一直循环。
运行时如下：

另外还要特别介绍的一个方法：

    Sub Main（）
Dim a As Integer
Dim s As String

Console.WriteLine("请输入1个整数：")
a = Val(s)
Console.WriteLine("输入的数字是：" & a)
End Sub
val()方法输出字符串最前面的数字，例如： 输入： 1a     输出：1
输入： 1a1   输出：1
输入： a1     输出： 0

由于.net平台下C#和vb.NET很相似，本文也可以为C#爱好者提供的参考。
学习更多vb.net知识，请参看 vb.net 教程 目录

展开全文
• vb.net 数据类型转换 Casting is the process of converting one data type to another, for example, from an Integer type to a String type. Some operations in VB.NET require specific data types to work. ...
• VBA实现单精度浮点数与十六进制字符串相互转换,并提供2个相互转换的示例 第一个按钮： "A1录入十六进制8位字符串； B1输出单精度浮点数结果" 第二个按钮 "将B1作为单精度浮点数输入 C1输出16进制结果
• 1在dateTimePicker.Value的值转换成string字符后续格式中，年用y，月用M，日用d，小时H或h都可以，分钟用m，秒用s。大小写有区分 2这些字符串只是在特定格式下会显示时间，后续文本没用到这些格式会直接显示本身。 ...
• 1. 使用%c输出的是字符本身。 2. 使用%d输出的是字符对应的ASCII。 3. 在ASCII中，小写英文字符 = 大写英文字符+32。 4. 还有注意区分单引号''和双引号""的区别。 单引号：字符，是可以进行加减的。 双引号...
• ## VB字符串处理大全

万次阅读 2018-09-16 11:56:53
2.2 转换字符串  2.3 创建字符串  2.4 获取字符串的长度  2.5 格式化字符串  2.6 查找字符串  2.7 提取字符/字符串  2.8 删除空格  2.9 返回字符代码  2.10 返回数值代表的相应字符  2.11 使用字节的函数...
• 最近在做一个vb.net写的一个网站，有一次同学有个问题问我，说程序总是抛出“从字符串“aa”到类型“Double”的转换无效”的错误。我过去一 看是个操作数据库的函数，我一开始想到的就是给参数赋值赋错了，引发的...
• Str$(x):把x的值转换为一个字符串 Val$(X):把x 字符转换数值 例子： Private Sub Command1_Click() Text2 = Val(Text1) End Sub Private Sub Command2_Click() Text2 = Str(Text1) End Sub 方法简单就不截图了 ！ ...
• 字符型可以转为数值型的函数有: CInt():转为整型, Csng(),转为单精度 CDbl,转为双精度Clng（）， 转为长整型CDec(), 转为十进制此外, val（）函数也可将字符串转数字型 转载于:...
• ## C语言

万次阅读 多人点赞 2019-12-18 23:01:50
（不能是整形数据，如0）（常量的类型可以从字面上区分）（1整型常量）（1.0实型常量）（a为字符型常量） 14.\0八进制数，所以\09是错误的。 15.字符常量在内存中占1个字节，字符常量可以进行关系运算。不能...
• 这样的字符转换为一个数值，这就需要数据类型转换。 一、隐式转换和显示转换 隐式转换就是程序运行期间自行转换类型，不需要人为干预；而显示转换要求编译前指定由哪种类型转换成哪种类型，在代码书写中很容易识...
• 在下位机中处理来自串口的字符串数组，将其转换为对应的整型变量，这里考虑了正负数两种情况，在VC6.0环境下验证，使用时利用两个子函数即可
• CStr函数示例本示例使用CStr函数将一数值转换为String。DimMyDouble,MyStringMyDouble=437.324'MyDoubleDouble类型。MyString=CStr(MyDouble)'MyString的内容“437.324”。CInt函数示例本示例使用CInt函数将一...
• Len Len(string|varname) 返回字符串内字符的数目，或是存储一变量所需的字节数。 Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) 将字符串前面的空格去掉 Rtrim Rtrim(string) 将字符串后面...
• 在c语言编程中，经常会遇到将字符串或者字符数组内的数据转换为int数据或者float数据，网上找了好多方法，结果都不可行，可能是C++的函数吧。在经过多方询问后，发现可以用atoi和atof函数来进行转换，具体如下：...
• 一个数据库人员,经常会写一些vb脚本,我最近就研究了一些 做经常使用的部分,类型转换,整理一些资料以供参考 1. CBool函数描述返回表达式，此表达式已转换为 Boolean（布尔类型／是否类型） 子类型的 Variant...
• Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like "*.*" Or ...阿拉伯数字转换为中文大写数值函数 ※ VB 获取 Textbox 文本框中的行数函数 更多精彩>>>
• 输入：有一个int数组，buf[29]，共29个参数 1:8 2:2952790016 3:65536 4:268435456 5:0 6:0 7:0 8:184644090 9:1073741824 10:809477063 11:9109504 12:32 13:96478368 14:223139072 15:527044864 16:132645902 ...
• 最近我说明了用VB.NET将字符转换成字节数组的方法。如果你需要将一个字节数组转换字符串，可以使用BitConverter.ToString或Covert.ToBase64String方法。下面我提供实例说明如何用上两种方法进行转换。 字节...
• ## VB常用字符串函数

千次阅读 2015-02-27 09:27:30
1. ASC(X)，Chr(X)：转换字符字符码  [格式]：  P=Asc(X) 返回字符串X的第一个字符字符码  P=Chr(X) 返回字符码等于X的字符  [范例]：  (1)P=Chr(65)  ‘ 输出字符A,因为A的ASCII码等于65  (2)P...
• 之前在Try...Catch...Finally...End Try异常处理中在U层接收异常信息遇到的问题：从字符串“xxx”到类型“Double”的转换无效，而学到的： 如下图 点击打开链接 原因在于 vb.NET中的连接...
• 本章介绍C#语言的基础知识，希望具有C语言的读者能够基本掌握C#语言，并以此基础，能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是不可能的，如需进一步学习C#语言...
• VB总结(1)常用内部函数——计算函数，字符函数，转换函数，日期函数经过2周半左右的时间，博主终于认认真真刷完了一本600页的VB教程。。。因为VB是博主接触的第一门编程语言，之前有零散的学过一点，所以系统的学...
• ## R

千次阅读 2018-02-27 16:22:13
R学习笔记 第一篇：变量，向量和因子R是专门用于数据分析和统计的脚本语言，...R是一种解释语言，这意味着代码在运行之前不需要编译，在学习R语言时，首先需要安装R，访问网站 https://www.r-project.org/，下载...

...