我的程序使用的ID系统在字母前需要1-3位数字,然后在字符后面需要1-3位数字。例如:12a123
或1b83
等
我想知道的是如何在字符串中找到第一个字母,这样我就可以存储字母,因为它用于稍后的数字之间的操作。
谢谢:)
答案 0 :(得分:3)
只需遍历字符并抓住上/下框A-Z范围内的第一个字符。
public char getCharacter(final String code)
{
for (char character : code.toCharArray())
{
if ( (character >= 'a' && character <= 'z')
|| (character >= 'A' && character <= 'Z'))
{
return character;
}
}
throw new RuntimeException("No character in ID: " + code);
}
答案 1 :(得分:2)
您可以使用正则表达式执行此任务,例如:
System.out.println("12a123".replaceAll("\\d{1,3}([A-z])\\d{1,3}", "$1"));
<强>故障:强>
\d{1,3}
匹配一个数字(等于[0-9]
){1,3}
量词 - 匹配1至3次,尽可能多次,根据需要回馈(贪婪)[A-z]
)
[A-z]
A-z A(索引65)和z(索引122)(区分大小写)答案 2 :(得分:2)
我可以建议两种解决方案:
如果您使用的是Java 8,则可以使用:
String str = "12a123";
String firstCharacter = str.replaceAll("\\d{1,3}([A-z])\\d{1,3}", "$1");//a
你可以像这样使用replaceAll:
{{1}}
答案 3 :(得分:1)
使用Java的Character类的isLetter方法。
看起来像;
public class CharacterTest {
private static Character getFirstCharInString(final String candid)
{
int found = 0;
char [] candids = candid.toCharArray();
for(found = 0; found < candids.length; found++)
{
if(Character.isLetter(candids[found])) break;
}
return new Character(candids[found]);
}
public static void main(String[] args) {
String ids = "12a123";
String ids2 = "1b83";
System.out.println(getFirstCharInString(ids));
System.out.println(getFirstCharInString(ids2));
}
}
答案 4 :(得分:1)
这个与Aniket类似。
public class ExampleCode
{
public static void main(String[] args)
{
String[] input = { "12a234", "1s324" };
String[] operations = new String[input.length];
for (int i=0; i < input.length; i++)
{
operations[i] = token.replaceAll("\\d{1,3}([A-z])\\d{1,3}", "$1"));
}
}
}