一段字符串,要求取第二个英文字母前的字符。

题目是:一段字符串,要求取第二个英文字母前的字符。
例:B022**A**1111-1
我想取得第二个英文字母前面的字符,如何识别这个英文字符呢?(A的字符位置不定,不得用位数来取)
谢谢,

7个回答


    public string GetSubstring(string s)
    {
        string r = "";
        int charNum=0;
        for (int i = 0; i < s.Length; i++) {
            if ((s[i] >= 'A' && s[i] <= 'Z') 
                || (s[i] >= 'a' && s[i] <= 'z')
                ) charNum++;
            if (charNum >= 2) break;
            r += s[i];
        }
        return r;
    }




        Response.Write(GetSubstring("B022A1111-1") + "<BR>");
        Response.Write(GetSubstring("022A111B1-1") + "<BR>");
@Test
public void testStr(){
    String str="B02a241A**1111-1";
    int flag=0;
    for(int i=0;i<str.length();i++){//遍历字符串
        char c=str.charAt(i);// c为字符串中的字符
        if( ('a'<=c && c<='z')||('A'<=c && c<'Z') ){
            flag++;
            if(flag==2){
              // str.charAt(i-1) 就是第二个英文字母前的字符!!!!
                System.out.println(str.charAt(i-1));
                break;
            }
        }
    }

}

^[A-Za-z]+$ 用正则表达式判断获取字符串
用for循环变量
string str="B022**A**1111-1";
//将str字符串转化为数组
int i,index=0,len;
for( i=0 ; i < str.length ; i ++){
if(str[i].match('^[A-Za-z]+$')){
index+=1;
}
if(index==2){
len=i;
}
}
//打印第二个英文字母前面的字符长度 len+1
//然后截取

大致思路应该这样,自己简单写的回答的不好,勿怪

以上是java实现的,C#思路差不多。希望可以帮助到你!

char数组c接收字符串 c[i]for循环 ch=c[i] 如果ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'count++;当count=2 输出c[i-1]

split函数 直接从你要取的字符切分 split('A') 然后 split('A')[0]就是你前面的字符 当然你这个字符串中不能有其他字符

如果你的第一个字符是字母的话,我就建议你用正则表达式直接获取;
表达式内容是 ([A-Za-z].*?)[A-Za-z].*
然后匹配捕获组就可以了;
c#不了解,我这里给你写个js和java版本的参考吧
javascript:
var orig = 'B1823****213C247823A384B';
var reg = /([A-Za-z].*?)[A-Za-z].*/g;
var result = reg.exec(orig);
//查看是否有捕获结果
if(result){//第一组
//alert(result[1]);
console.log(result[1]);
}

java:
public static void test() {
    String orig = "B1823****213C247823A384B";
    Pattern pattern = Pattern.compile("([A-Za-z].*?)[A-Za-z].*");
    Matcher matcher = pattern.matcher(orig);
    if(matcher.find()) {
        System.out.println("----------->" + matcher.group(1));//第一个捕获组数据
    }
}



    希望对你有帮助....
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐