[在ASP和Javascript中,如何获取字符串中最后一个字母的位置]

Chapant 2008-04-14 11:03:31
RT

比如“1B2A3”,我要获取字母A的位置,ASP和Javascript中分别实现!

希望能提供尽可能简单的方法,谢谢!
...全文
933 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zl_c 2008-04-14
用正则的JS版:
function GetLastLetterIndex(Str)
{
var Pat = /[A-Z]/igm; //不区分大小写
var TempArr = Str.split(""); //倒入数组
TempArr = TempArr.reverse(); //倒序
Str = TempArr.join(""); //字符串倒序了
var re = Str.search(Pat); //按正则式搜索字母第1次出现的位置
if(re == -1) return 0 //如果没有,返回0
else return Str.length - re; //转换成倒序前的位置
}
alert(GetLastLetterIndex("1d253512dD3"));
回复
Atai-Lu 2008-04-14
[Quote=引用 11 楼 chinmo 的回复:]
使用正则的话也是需要遍历
[/Quote]
用正则似乎比一般的循环遍历更耗资源...
回复
str3="[aa22233]sdfsd67f54[bbb] "
Function ReplaceQuestion3(QStr)
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "[A-Za-z]"
Set Matches =re.Execute(QStr)
Set re = Nothing
ReplaceQuestion3= Matches(0)

End Function
response.Write ReplaceQuestion3(str3)


这个是取第一个字母的

回复
str3="[aa22233]sdfsd67f54[bbb] "
Function ReplaceQuestion3(QStr)
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "[^A-Za-z]"
Set Matches =re.Execute(QStr)
Set re = Nothing
For Each Match in Matches
QStr=Replace(QStr,Match.Value,"")

Next

ReplaceQuestion3= QStr
End Function
response.Write ReplaceQuestion3(str3)

这个是取所有的字母,其实把红色部分变成取最大的那个就可以了
回复
使用正则的话也是需要遍历
回复
基本上都是循环遍历
回复
zl_c 2008-04-14
我的JS版,其他方法?我再想想:
function GetLastLetterIndex(Str)
{
var StrLen = Str.length;
var AscCode;
Str = Str.toUpperCase();
for(var i = (StrLen - 1);i >= 0;i--)
{
AscCode = Str.substr(i,1).charCodeAt();
if(AscCode >=65 && AscCode <= 90) return i + 1;
}
return 0;
}
alert(GetLastLetterIndex("125234fgadfg3A245234d"));
回复
Chapant 2008-04-14
楼上的正则倒是给了我一点提示,得到最后一个字母,再从原字符串取出最后一个匹配的位置,多谢!

其他好像都是循环遍历,有其他更快捷的方法吗?
回复
Atai-Lu 2008-04-14
晕,看成是获取最后一个字母了...
回复
Atai-Lu 2008-04-14

Function getLastWord(str)
Set regEx = New RegExp
regEx.Pattern = "(.*)([a-zA-Z])[^a-zA-Z]*"
regEx.IgnoreCase = false
regEx.Global = True
str = regEx.Replace(str,"$2")
getLastWord = str
Set reg=nothing
End Function
str="1B2A3"
Response.Write(getLastWord(str)):Response.End()
回复
zl_c 2008-04-14
Dim TestStr
TestStr = "125234fgadfg3A245234d"
Response.Write(GetLastLetterIndex(TestStr))

Function GetLastLetterIndex(Str)
'获取字符串最后一个字母在字符串的位置
Dim AscCode
Dim ReIndex
ReIndex = 0
Str = Ucase(Str)
StrLen = Len(Str)
For i = StrLen to 1 Step -1
AscCode = Asc(Mid(Str,i,1))
If AscCode >= 65 and AscCode <= 90 Then
ReIndex = i
Exit For
End If
Next
GetLastLetterIndex = ReIndex
End Function
回复
楼上的不错
ASP其实写法与他上面,就是换下格式和对应函数
回复
No_Data_Found 2008-04-14
<%
function getLastLocation (str)
getLastLocation=0
l = len(str)

for i = 0 to l
c = asc(mid(str,l-i,1))
if (c>"64" and c<"91") or (c>"96" and c<"123") then
getLastLocation = l-1-i
exit for
end if
next

end function


str = "1B2A3"
response.Write getLastLocation(str)

%>
回复
No_Data_Found 2008-04-14
<script language="javascript">
function getLastLocation(str)
{
var len = str.length;

for(var i=0;i<len;i++)
{
var s = str.substr(len-1-i,1);
var c = s.charCodeAt();
if( (c > 64 && c<91) || (c > 96 && c<123))
{
return len-1-i;
}
}
}

var str;
str = "1B2A3";

alert(getLastLocation(str));
</script>


返回 3
回复
lxtrayn 2008-04-14
javascript:
'1B2A3'.search('A');
ASP:
InStr('A','1B2A3')
回复
上面这个的运行时间几乎接近与0
回复
str3="[aa22233]sdfsd67f54[bbb] "
Function ReplaceQuestion3(QStr)
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "[A-Za-z]"
Set Matches =re.Execute(QStr)
Set re = Nothing
a=Matches.Count
ReplaceQuestion3=Matches(a-1)

End Function
response.Write ReplaceQuestion3(str3)

这个就是获取最后一个字母的,你可以与一般的循环遍历比较一下运行时间
回复
这个比比一般的循环遍历更耗资源吗??
回复
str3="[aa22233]sdfsd67f54[bbb] "
Function ReplaceQuestion3(QStr)
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "[A-Za-z]"
Set Matches =re.Execute(QStr)
Set re = Nothing
a=Matches.Count
ReplaceQuestion3=Matches(a-1)

End Function
response.Write ReplaceQuestion3(str3)
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2008-04-14 11:03
社区公告
暂无公告