Java获取字符串的第一个字符值

时间:2016-09-06 06:08:05

标签: java string pattern-matching

我有像

这样的输入
  

AS23456SDE

     

MFD324FR

我需要获得像

这样的First Character值
  

AS,MFD

不应该输入前两个或前三个字符。需要在数字之前获得第一个字符。

谢谢。

编辑:这是我尝试过的。

Matrix3x2.CreateScale

5 个答案:

答案 0 :(得分:4)

这是一个很好的单行解决方案。它使用正则表达式匹配字符串中的第一个非数字字符,然后用这个匹配替换输入字符串。

public static void main(String[] args) {
        String testString = "MFD324FR";
        int index = 0;
        for (Character i : testString.toCharArray()) {
            if (Character.isDigit(i))
                break;
            index++;
        }
        System.out.println(testString.substring(0, index));

}

<强>输出:

public String getFirstLetters(String input) {
    return new String("A" + input).replaceAll("^([^\\d]+)(.*)$", "$1")
                                  .substring(1);
}

System.out.println(getFirstLetters("AS23456SDE"));
System.out.println(getFirstLetters("1AS123"));

答案 1 :(得分:3)

一个简单的解决方案可能是这样的:

Place Type

答案 2 :(得分:3)

使用以下函数获取所需的输出

public String getFirstChars(String str){
 int zeroAscii = '0'; int nineAscii = '9'; 
 String result = "";
 for (int i=0; i< str.lenght(); i++){
   int ascii = str.toCharArray()[i];
   if(ascii >= zeroAscii && ascii <= nineAscii){
     result = result + str.toCharArray()[i];
   }else{
     return result;
   }
 }
 return str;

}

将您的字符串作为参数传递

答案 3 :(得分:1)

#canvas-preview::before{
 background-color:green;
 content: '';
 display: block;
 height: 100%;
 position: absolute;
 width: 100%;
 z-index:-1;
}
#custom-canvas{
 margin:10px;
 color:#fff;
}

这会在遇到一个数字(即整数)之前打印出第一个'n'个字符。

答案 4 :(得分:1)

我认为这可以通过一个匹配数字和java string split function的简单正则表达式完成。这种基于正则表达式的方法比使用更复杂的正则表达式的方法更有效。

以下内容将起作用

String inp = "ABC345.";
String beginningChars = inp.split("[\\d]+",2)[0];
System.out.println(beginningChars); // only if you want to print.

我使用的正则表达式"[\\d]+"已经为java转义了。

它的作用是什么?

匹配一个或多个数字(d)。 d匹配unicode中任何语言的数字,(因此它也匹配日语和阿拉伯数字)

String beginningChars = inp.split("[\\d]+",2)[0]做什么?

它应用此正则表达式并将字符串分隔为找到匹配项的字符串数组。最后的[0]选择该数组的第一个结果,因为你想要起始字符。

我提供为.split(regex,int)的第二个参数是什么?

这是Limit参数。这意味着正则表达式将应用于字符串,直到找到1匹配。一旦找到1匹配,则不再处理该字符串。

来自Strings javadoc页面:

  

limit参数控制模式的应用次数,因此会影响结果数组的长度。如果限制n大于零,则模式最多应用n - 1次,数组的长度不大于n,并且数组的最后一个条目将包含超出最后匹配的分隔符。如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度。如果n为零,那么模式将被应用尽可能多次,数组可以具有任何长度,并且尾随空字符串将被丢弃。

如果您的字符串很大,这将非常有效。

如果您只想分割英文数字

,可能还有其他正则表达式

&#34; [0-9] +&#34;