截取字符串最后一个字符 && asp textarea 多行数组分割处理

ASP.NET与ASP字符串处理:截取与多行数组分割
这篇博客介绍了如何在ASP.NET和ASP中处理字符串,包括去除字符串最后一个字符以及处理textarea中多行数组的分割。在ASP.NET中,使用`Remove`方法可以移除字符串末尾的特定字符;在ASP中,通过`Right`和`Left`函数实现相同功能。同时,提到了JScript和VBScript中正则表达式的应用,以及处理textarea中回车符(chr(13))的方法。

asp.net 去除字符串右侧的最后一个字符

        string str = "HTML,Asp/Aspx,MySQL/Cgi/Java/Php,";

        str = str.Remove(str.LastIndexOf(","),1);

        Response.Write(str);

 

asp 去除字符串末尾的逗号 

<%
str="aaa,bbb,ccc,eee,"
if right(str,1)="," then
str=left(str,len(str)-1)
end if
%>  

JScript

代码
<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>

 

VBScript code

代码
<%
function getLastLocation (str)
getLastLocation=0
= 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)

%>

 

正则判断获取最后一个字母

代码
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
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) 

 

正则的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"));

 

vb获取最后一个字母

代码
//扩展string的原型
String.prototype.trim=function(reg)
{
   
if(reg)
     
return this.replace(reg,"");//按给点正则清除不需要的字符
   
else
     
return this.replace(/^/s*|/s*$/g,"");//清除两端空白符号
}

//试试下面的代码,在setURL时判断是否已经存在id,getCookie还是按照原来的
 
function getCookie(name) {
        var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
        
if(arr=document.cookie.match(reg))
            
return unescape(arr[2]);            
        
else
            
return "";
    }
function FindIndex(arr,id)//查找当前id是否在cookie中,用indexOf来查找不太精确,有可能存在111111时,而当前id为111会提示已经存在的错误
{
  
for(var i=0;i<arr.length;i++)
   
if(arr[i]==id)
     
return i;
  
return -1;//未找到
}   
function setURL(productId)
{
        var productId="<%=id %>"
        var idc=getCookie("test").trim().trim(/^/||/|$/g);//去掉首尾的空白符号和|
        
if(idc=="")//没有cookie
          setCookie("test",productId);
        
else
        {      
           var ids= idc.split("|");//分离  
           var OverMax=ids.length>2?true:false;//是否大于存储的数量......... 
           var Index=FindIndex(ids,idc);
           
if(Index==-1)//不存在
           {
             
if(OverMax)//超过
                ids.splice(ids.length-1,1);//删除最后一个,也就是最早浏览的一个
             setCookie("test",productId+"|"+ids.join("|"));//注意使用|连接数组
            }
           
else//存在
           {
              idc=productId;
              ids[Index]="";//清空这个下标的值
              
//下面连接要存储的id
              
for(var i=0;i<ids.length;i++)
              {
                 
if(ids[i]!="")
                   idc+="|"+ids[i];
              }
              setCookie("test",idc);
           }
        }
 }扩展string的原型
String.prototype.trim=function(reg)
{
   
if(reg)
     
return this.replace(reg,"");//按给点正则清除不需要的字符
   
else
     
return this.replace(/^/s*|/s*$/g,"");//清除两端空白符号
}

//试试下面的代码,在setURL时判断是否已经存在id,getCookie还是按照原来的
 
function getCookie(name) {
        var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
        
if(arr=document.cookie.match(reg))
            
return unescape(arr[2]);            
        
else
            
return "";
    }
function FindIndex(arr,id)//查找当前id是否在cookie中,用indexOf来查找不太精确,有可能存在111111时,而当前id为111会提示已经存在的错误
{
  
for(var i=0;i<arr.length;i++)
   
if(arr[i]==id)
     
return i;
  
return -1;//未找到
}   
function setURL(productId)
{
        var productId="<%=id %>"
        var idc=getCookie("test").trim().trim(/^/||/|$/g);//去掉首尾的空白符号和|
        
if(idc=="")//没有cookie
          setCookie("test",productId);
        
else
        {      
           var ids= idc.split("|");//分离  
           var OverMax=ids.length>2?true:false;//是否大于存储的数量......... 
           var Index=FindIndex(ids,idc);
           
if(Index==-1)//不存在
           {
             
if(OverMax)//超过
                ids.splice(ids.length-1,1);//删除最后一个,也就是最早浏览的一个
             setCookie("test",productId+"|"+ids.join("|"));//注意使用|连接数组
            }
           
else//存在
           {
              idc=productId;
              ids[Index]="";//清空这个下标的值
              
//下面连接要存储的id
              
for(var i=0;i<ids.length;i++)
              {
                 
if(ids[i]!="")
                   idc+="|"+ids[i];
              }
              setCookie("test",idc);
           }
        }
 }

 


 

 

asp textarea 多行数组分割处理方法

 

 

在textarea中,回车符不是“/n”,应该是chr(13)。

所以对应的asp处理代码如下

代码如下:

dedearr=split(xiangguanid2,chr(13)) '分割成数组
for dede=0 to ubound(dedearr)-1 '数组长度减一,因为最后有两个chr(13)换行。
dedearr2=split(dedearr(dede),"|")
dedetitle
=dedearr2(1)
dedeurl
=dedearr2(0)
if dedetitle<>"" and dedeurl<>"" then
xiangguanart2
=xiangguanart2&"<li><a href="""&dedeurl&""" title="""&dedetitle&""" target=""_blank"">"&dedetitle&"</a></li>"
end if
next
end if
<think>我们正在使用LVGL 8,目标是在textarea组件中删除最后一个字符。 根据LVGL文档和API,我们可以使用`lv_textarea_del_char`函数来删除光标前的一个字符(即向后删除)。但是,如果我们想要删除最后一个字符(无论光标在哪里),我们需要将光标移动到文本末尾,然后删除它前面的字符(即最后一个字符)。 步骤: 1. 获取textarea的当前文本。 2. 将光标移动到文本末尾(通过设置光标位置为文本长度)。 3. 然后使用`lv_textarea_del_char(textarea)`删除光标前的一个字符(此时光标在末尾,所以删除的就是最后一个字符)。 但是,注意:`lv_textarea_del_char`删除的是光标前一个字符(backspace)。因此,当光标在末尾时,删除的就是最后一个字符。 另一种方法是直接操作文本:获取当前文本,删除最后一个字符,然后重新设置文本。但是这样会丢失光标位置和选择状态等,而且效率较低。所以推荐使用移动光标再删除的方法。 因此,我们可以这样实现: ```c // 假设ta是lv_textarea对象指针 void lv_textarea_remove_last_char(lv_obj_t * ta) { // 获取当前文本长度 const char * txt = lv_textarea_get_text(ta); size_t len = strlen(txt); if (len > 0) { // 将光标移动到文本末尾 lv_textarea_set_cursor_pos(ta, len); // 删除光标前的一个字符(即最后一个字符) lv_textarea_del_char(ta); } } ``` 注意:在LVGL 8中,函数名可能略有不同,但基本一致。例如,设置光标位置的函数在LVGL 8中可能是`lv_textarea_set_cursor_pos`,删除字符函数是`lv_textarea_del_char`。 另外,如果文本为空,则不需要操作。 引用说明:LVGL官方文档中关于textarea的操作[^1]。 但是,请注意,上述方法会改变光标位置(将光标移到了末尾)。如果用户正在中间输入,这样操作会打断用户。所以,如果是在用户输入过程中,我们通常是在当前光标位置删除,而不是只删除末尾。但问题要求删除最后一个字符,所以我们的方法符合要求。 另外,如果我们需要保持光标原来的位置(除了删除最后一个字符外,我们不希望移动光标),那么这种方法就不适用。但是题目要求删除最后一个字符,所以通常我们删除末尾字符时,光标在末尾是合理的。 如果确实需要在不移动光标的情况下删除最后一个字符,那么可能需要直接操作文本字符串,然后重新设置整个文本。但这样会丢失当前的光标位置和选择状态,所以我们需要先保存光标位置,操作后再恢复(但删除最后一个字符后,光标位置可能需要调整,比如如果光标在删除的字符之后,那么光标位置要减一)。这比较复杂,且不推荐。所以,如果只是删除最后一个字符,且要求光标在末尾,那么上述方法是最简单的。 因此,根据需求,我们提供上述方法。 相关问题: 1. 在LVGL 8中,如何获取textarea的当前文本内容? 2. 如何设置textarea的光标位置? 3. 在LVGL中,如何删除textarea中光标处的字符(即向前删除)?</think>在 LVGL 8 中,要从 `textarea` 组件删除最后一个字符,可以通过以下步骤实现: ### 解决方案 1. **获取当前文本** 使用 `lv_textarea_get_text(ta)` 获取 `textarea` 的完整文本内容。 2. **删除最后一个字符** - 计算文本长度:`strlen(txt)` - 若长度大于 0,将光标移动到文本末尾:`lv_textarea_set_cursor_pos(ta, len)` - 使用 `lv_textarea_del_char(ta)` 删除光标前的一个字符(即最后一个字符) ```c void remove_last_char(lv_obj_t * ta) { const char * txt = lv_textarea_get_text(ta); size_t len = strlen(txt); if (len > 0) { lv_textarea_set_cursor_pos(ta, len); // 移动光标到末尾 lv_textarea_del_char(ta); // 删除最后一个字符 } } ``` ### 关键函数说明 - **`lv_textarea_set_cursor_pos(ta, pos)`** 将光标设置到指定位置(`pos` 为字符索引,从 0 开始计数)。 - **`lv_textarea_del_char(ta)`** 删除光标**前**的一个字符(类似键盘的退格键)[^1]。 ### 注意事项 1. **文本缓冲区** 如果文本是动态分配的(例如通过 `lv_label_set_text`),删除操作会直接修改缓冲区,无需额外内存管理[^1]。 2. **空文本处理** 添加 `len > 0` 检查可避免对空文本操作导致的错误。 3. **光标位置** 删除字符后光标会停留在新的文本末尾。 --- ### 相关问题 1. **如何在 LVGL 8 中实现退格键功能?** `lv_textarea_del_char()` 即对应退格键逻辑,需配合光标位置使用。 2. **如何清空 textarea 的所有内容?** 调用 `lv_textarea_set_text(ta, "")` 可直接重置文本。 3. **LVGL 8 中如何限制 textarea 的最大输入长度?** 使用 `lv_textarea_set_max_length(ta, max_len)` 设置字符数限制。 4. **如何获取 textarea 的实时输入内容?** 通过 `lv_textarea_get_text(ta)` 或绑定 `LV_EVENT_VALUE_CHANGED` 事件监听变化。 [^1]: 对于动态分配的文本缓冲区,LVGL 会直接修改内容以添加/删除字符
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值