有修改字符串中指定位置字符的函数吗

时间:2021-04-11 10:55:56
MID是取某个位置的字符

那修改某个位置字符的话,有没有对应的函数呢

24 个解决方案

#1


 
Replace函数
      

描述

返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。

语法

Replace(expression, find, replacewith[, start[, count[, compare]]])

Replace函数语法有如下几部分:

部分 描述 
expression 必需的。字符串表达式,包含要替换的子字符串。 
find 必需的。要搜索到的子字符串。 
replacewith 必需的。用来替换的子字符串。 
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。 
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。 
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。 


设置值

compare参数的设置值如下:

常数 值 描述 
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。 
vbBinaryCompare 0 执行二进制比较。 
vbTextCompare 1 执行文字比较。 
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 


返回值

Replace的返回值如下:

如果 Replace返回值 
expression长度为零 零长度字符串("")。 
expression为Null 一个错误。 
find长度为零 expression的复本。 
replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。 
start > Len(expression) 长度为零的字符串。 
count is 0 expression.的复本。 


说明

Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。

#2


有修改字符串中指定位置字符的函数吗
没听说过,有吗?用的时候一行代码写一个就好了。

#3


上面已经有函数说明,我举个例子如下:
MyString = Replace("XXpXXPXXp", "p", "T", 1)
就是从第一个开始发现p全部替换为T,1 表示文本替换。
结果:MyString=XXTXXPXXT

这些已经能满足你的功能了。函数的描述查看VB的帮助文档

#4


Dim s$
s = "abcd"
Mid(s, 2, 2) = "xx"
MsgBox s

#5


LS正解,即是所谓的mid语句,而不是mid函数。

#6


Replace函数 ,mid语句都可以,复杂的--需要满足一定条件的替换是正则替换(使用正则表达式)

#7


引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊

#8


引用 7 楼 samtyty 的回复:
引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊


奇怪,这算什么用法?函数居然还可以放在赋值语句的左边???!

#9


引用 7 楼 samtyty 的回复:
引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊

看来这个"函数"的出场率比起这个"语句"的出场率低太多了啊.......

MSDN中的MID结果,先是这样:

Mid
Mid 关键字用于下列上下文:

Mid 函数

Mid 语句

然后分别的解释如下:

Mid 函数
      

返回 Variant (String),其中包含字符串中指定数量的字符。

语法

Mid(string, start[, length])

Mid 函数的语法具有下面的命名参数:

部分 说明 
string 必要参数。字符串表达式,从中返回字符。如果 string 包含 Null,将返回 Null。 
start 必要参数。为 Long。string 中被取出部分的字符位置。如果 start 超过 string 的字符数,Mid 返回零长度字符串 ("")。 
length 可选参数;为 Variant (Long)。要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到尾端的所有字符。 


说明

欲知 string 的字符数,可用 Len 函数。

注意   MidB 函数作用于字符串中包含的字节数据,如同在双字节字符集(DBCS)语言中一样。因此其参数指定的是字节数,而不是字符数。对于使用 MidB的示例代码,请参阅示例主题中的第二个示例。

Mid 语句
      

在一 Variant (String) 变量中以另一个字符串中的字符替换其中指定数量的字符。

语法

Mid(stringvar, start[, length]) = string

Mid 语句的语法具有下面几个部分:

部分 描述 
stringvar 必要参数。被更改的字符串变量名。 
start 必要参数;Variant (Long)。stringvar 中被替换的字符开头位置。 
length 可选参数;Variant (Long)。被替换的字符数。如果省略,string将全部用上。 
string 必要参数。字符串表达式,替换部分 stringvar 的字符串。 


说明

被替换的字符数量总是小于或等于 stringvar 的字符数。

注意 MidB 语句作用于包含在字符串中的字节数据。在 MidB 语句中,start 指定 stringvar 中被替换的字节开头位置,而 length 为替换的字节数。

这其实是两个看起来一模一样实际却是两个东西的东西.......

#10


学无止境啊

#11


原来这样啊。不过,就像变体一样,我决定不用这种用法:)

#12


这其实是两个看起来一模一样实际却是两个东西的东西.......
在VB中 比比皆是:

Input 函数;Input 语句;
Left函数;Left 属性;
Line 属性;Line 方法;
Time 语句;Time 函数;
Stop 方法;Stop 语句;
Set 方法 ;Set 语句
Print 方法;Print  语句;
…………

#13


你不会是想说:语句们其实都是函数,想不用都难吧?

#14


顶上去请老虎点评一下

#15


西西为什么就不用mid 语句?这可是VB中高效的语句啊....

#16


啊? 有修改字符串中指定位置字符的函数吗

我觉得它好像看起来怪怪的,怕像变体一样带来各种潜在的BUG

#17


引用 8 楼 slowgrace 的回复:
引用 7 楼 samtyty 的回复:
引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊


奇怪,这算什么用法?函数居然还可以放在赋值语句的左边???!


放在左边是语句,不是函数!! MSDN上有MID函数和MID语句的说明.


#18


引用 16 楼 slowgrace 的回复:
啊?

我觉得它好像看起来怪怪的,怕像变体一样带来各种潜在的BUG

放心用吧,正规用法 有修改字符串中指定位置字符的函数吗
循环拼接字符串,用MID比用字符串连接符效率高很多

#19


谢谢蚜虫。你们都还用过啥常用的与函数对应的语句啊?

#20


这不很好吗?
看起来像个属性,既可以取值也可以赋值,很容易记住。
我倒是希望 VB6 中这种函数/语法对多多益善。

#21


不知道我说的对不对,好象按C的说法,用&拼接字符串,实际上每次都在重构string,所以效率很低。因此在要大量拼接字符串的时候,尽量会用数组和join。当然条件允许也可以先space(n)一个string再用mid语句替换,这样效率很高....

#22


引用 21 楼 vbman2003 的回复:
不知道我说的对不对,好象按C的说法,用&拼接字符串,实际上每次都在重构string,所以效率很低。

我也觉得是这样
所以“大字符串 & (小字符串 & 小字符串)” 比 “大字符串 & 小字符串 & 小字符串” 要快

#23


引用 22 楼 yachong 的回复:
不知道我说的对不对,好象按C的说法,用&拼接字符串,实际上每次都在重构string,所以效率很低。
我也觉得是这样
所以“大字符串 & (小字符串 & 小字符串)” 比 “大字符串 & 小字符串 & 小字符串” 要快

不错的例子,哈哈,同样感觉用&拼接字符串,实际上每次都在重构string,所以效率很低

#24


引用 1 楼 leftie 的回复:
Replace函数
     

描述

返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。

语法

Replace(expression, find, replacewith[, start[, count[, compare]]])

Replace函数语法有如下几部分:

部分 描述
expression 必需的。字符串表达式,包含要替换的子字符串。
find 必需的。要搜索到的子字符串。
replacewith 必需的。用来替换的子字符串。
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。


设置值

compare参数的设置值如下:

常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。


返回值

Replace的返回值如下:

如果 Replace返回值
expression长度为零 零长度字符串("")。
expression为Null 一个错误。
find长度为零 expression的复本。
replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。
start > Len(expression) 长度为零的字符串。
count is 0 expression.的复本。


说明

Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。



这个正解!

#1


 
Replace函数
      

描述

返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。

语法

Replace(expression, find, replacewith[, start[, count[, compare]]])

Replace函数语法有如下几部分:

部分 描述 
expression 必需的。字符串表达式,包含要替换的子字符串。 
find 必需的。要搜索到的子字符串。 
replacewith 必需的。用来替换的子字符串。 
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。 
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。 
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。 


设置值

compare参数的设置值如下:

常数 值 描述 
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。 
vbBinaryCompare 0 执行二进制比较。 
vbTextCompare 1 执行文字比较。 
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 


返回值

Replace的返回值如下:

如果 Replace返回值 
expression长度为零 零长度字符串("")。 
expression为Null 一个错误。 
find长度为零 expression的复本。 
replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。 
start > Len(expression) 长度为零的字符串。 
count is 0 expression.的复本。 


说明

Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。

#2


有修改字符串中指定位置字符的函数吗
没听说过,有吗?用的时候一行代码写一个就好了。

#3


上面已经有函数说明,我举个例子如下:
MyString = Replace("XXpXXPXXp", "p", "T", 1)
就是从第一个开始发现p全部替换为T,1 表示文本替换。
结果:MyString=XXTXXPXXT

这些已经能满足你的功能了。函数的描述查看VB的帮助文档

#4


Dim s$
s = "abcd"
Mid(s, 2, 2) = "xx"
MsgBox s

#5


LS正解,即是所谓的mid语句,而不是mid函数。

#6


Replace函数 ,mid语句都可以,复杂的--需要满足一定条件的替换是正则替换(使用正则表达式)

#7


引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊

#8


引用 7 楼 samtyty 的回复:
引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊


奇怪,这算什么用法?函数居然还可以放在赋值语句的左边???!

#9


引用 7 楼 samtyty 的回复:
引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊

看来这个"函数"的出场率比起这个"语句"的出场率低太多了啊.......

MSDN中的MID结果,先是这样:

Mid
Mid 关键字用于下列上下文:

Mid 函数

Mid 语句

然后分别的解释如下:

Mid 函数
      

返回 Variant (String),其中包含字符串中指定数量的字符。

语法

Mid(string, start[, length])

Mid 函数的语法具有下面的命名参数:

部分 说明 
string 必要参数。字符串表达式,从中返回字符。如果 string 包含 Null,将返回 Null。 
start 必要参数。为 Long。string 中被取出部分的字符位置。如果 start 超过 string 的字符数,Mid 返回零长度字符串 ("")。 
length 可选参数;为 Variant (Long)。要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到尾端的所有字符。 


说明

欲知 string 的字符数,可用 Len 函数。

注意   MidB 函数作用于字符串中包含的字节数据,如同在双字节字符集(DBCS)语言中一样。因此其参数指定的是字节数,而不是字符数。对于使用 MidB的示例代码,请参阅示例主题中的第二个示例。

Mid 语句
      

在一 Variant (String) 变量中以另一个字符串中的字符替换其中指定数量的字符。

语法

Mid(stringvar, start[, length]) = string

Mid 语句的语法具有下面几个部分:

部分 描述 
stringvar 必要参数。被更改的字符串变量名。 
start 必要参数;Variant (Long)。stringvar 中被替换的字符开头位置。 
length 可选参数;Variant (Long)。被替换的字符数。如果省略,string将全部用上。 
string 必要参数。字符串表达式,替换部分 stringvar 的字符串。 


说明

被替换的字符数量总是小于或等于 stringvar 的字符数。

注意 MidB 语句作用于包含在字符串中的字节数据。在 MidB 语句中,start 指定 stringvar 中被替换的字节开头位置,而 length 为替换的字节数。

这其实是两个看起来一模一样实际却是两个东西的东西.......

#10


学无止境啊

#11


原来这样啊。不过,就像变体一样,我决定不用这种用法:)

#12


这其实是两个看起来一模一样实际却是两个东西的东西.......
在VB中 比比皆是:

Input 函数;Input 语句;
Left函数;Left 属性;
Line 属性;Line 方法;
Time 语句;Time 函数;
Stop 方法;Stop 语句;
Set 方法 ;Set 语句
Print 方法;Print  语句;
…………

#13


你不会是想说:语句们其实都是函数,想不用都难吧?

#14


顶上去请老虎点评一下

#15


西西为什么就不用mid 语句?这可是VB中高效的语句啊....

#16


啊? 有修改字符串中指定位置字符的函数吗

我觉得它好像看起来怪怪的,怕像变体一样带来各种潜在的BUG

#17


引用 8 楼 slowgrace 的回复:
引用 7 楼 samtyty 的回复:
引用 4 楼 sysdzw 的回复:
VB codeDim s$
s="abcd"Mid(s,2,2)="xx"
MsgBox s

今天才知道可以这样用mid的,基本功啊


奇怪,这算什么用法?函数居然还可以放在赋值语句的左边???!


放在左边是语句,不是函数!! MSDN上有MID函数和MID语句的说明.


#18


引用 16 楼 slowgrace 的回复:
啊?

我觉得它好像看起来怪怪的,怕像变体一样带来各种潜在的BUG

放心用吧,正规用法 有修改字符串中指定位置字符的函数吗
循环拼接字符串,用MID比用字符串连接符效率高很多

#19


谢谢蚜虫。你们都还用过啥常用的与函数对应的语句啊?

#20


这不很好吗?
看起来像个属性,既可以取值也可以赋值,很容易记住。
我倒是希望 VB6 中这种函数/语法对多多益善。

#21


不知道我说的对不对,好象按C的说法,用&拼接字符串,实际上每次都在重构string,所以效率很低。因此在要大量拼接字符串的时候,尽量会用数组和join。当然条件允许也可以先space(n)一个string再用mid语句替换,这样效率很高....

#22


引用 21 楼 vbman2003 的回复:
不知道我说的对不对,好象按C的说法,用&拼接字符串,实际上每次都在重构string,所以效率很低。

我也觉得是这样
所以“大字符串 & (小字符串 & 小字符串)” 比 “大字符串 & 小字符串 & 小字符串” 要快

#23


引用 22 楼 yachong 的回复:
不知道我说的对不对,好象按C的说法,用&拼接字符串,实际上每次都在重构string,所以效率很低。
我也觉得是这样
所以“大字符串 & (小字符串 & 小字符串)” 比 “大字符串 & 小字符串 & 小字符串” 要快

不错的例子,哈哈,同样感觉用&拼接字符串,实际上每次都在重构string,所以效率很低

#24


引用 1 楼 leftie 的回复:
Replace函数
     

描述

返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。

语法

Replace(expression, find, replacewith[, start[, count[, compare]]])

Replace函数语法有如下几部分:

部分 描述
expression 必需的。字符串表达式,包含要替换的子字符串。
find 必需的。要搜索到的子字符串。
replacewith 必需的。用来替换的子字符串。
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。


设置值

compare参数的设置值如下:

常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。


返回值

Replace的返回值如下:

如果 Replace返回值
expression长度为零 零长度字符串("")。
expression为Null 一个错误。
find长度为零 expression的复本。
replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。
start > Len(expression) 长度为零的字符串。
count is 0 expression.的复本。


说明

Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。



这个正解!