Sizy
2017-03-02 00:54
采纳率: 81.8%
浏览 4.1k

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

题目是:一段字符串,要求取第二个英文字母前的字符。
例: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>");
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • syhleo 2017-03-02 01:12
    @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;
                }
            }
        }
    
    }
    
    
    
    评论
    解决 无用
    打赏 举报
  • 360编码 2017-03-02 01:13

    ^[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
    //然后截取

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

    评论
    解决 无用
    打赏 举报
  • Warren10 2017-03-02 01:16

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

    评论
    解决 无用
    打赏 举报
  • syhleo 2017-03-02 01:18

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

    评论
    解决 无用
    打赏 举报
  • usecf 2017-03-02 01:21

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

    评论
    解决 无用
    打赏 举报
  • little_how 2017-03-02 01:34

    如果你的第一个字符是字母的话,我就建议你用正则表达式直接获取;
    表达式内容是 ([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));//第一个捕获组数据
        }
    }
    
    
    
        希望对你有帮助....
    
    评论
    解决 无用
    打赏 举报