正则快还是java自带的判断快_在不使用正则表达式的情况下,判断字符是Java中的字母还是数字的最佳方法是什么?...

在不使用正则表达式的情况下,判断字符是Java中的字母还是数字的最佳方法是什么?

在不使用正则表达式的情况下,识别string.charAt(index)是Java中的A-z字母还是数字的最佳和/或最简单的方法是什么? 谢谢。

Daniel Sopel asked 2019-09-21T16:59:41Z

9个解决方案

157 votes

Character.isDigit(string.charAt(index))(JavaDoc)如果是数字将返回true

Character.isLetter(string.charAt(index))(JavaDoc)如果是字母,则返回true

Adam answered 2019-09-21T17:00:02Z

20 votes

如答案所示(如果您仔细检查了!),您的问题就模棱两可。 “ A-z字母”或数字是什么意思?

如果您想知道字符是Unicode字母还是数字,请使用Character.UnicodeBlock和Character.isDigit方法。

如果您想知道一个字符是ASCII字母还是数字,那么最好的方法是通过比较字符范围“ a”至“ z”,“ A”至“ Z”和“ 0”至'9'。

请注意,所有ASCII字母/数字都是Unicode字母/数字...但是,有许多不是ASCII的Unicode字母/数字字符。 例如,重音字母,西里尔字母,梵语,...

通用的解决方案是这样做:

Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);

然后测试以查看该块是否是您感兴趣的块之一。在某些情况下,您将需要测试多个块。 例如,西里尔字母至少有4个代码块,拉丁语至少有7个代码块。 Character.UnicodeBlock类定义了众所周知的块的静态常量。 参见javadocs。

请注意,任何代码点最多只能包含一个块。

Stephen C answered 2019-09-21T17:01:17Z

16 votes

我正在寻找一个仅检查拉丁字母或十进制数字之一的函数。 自char c = 255(可打印版本为├)以来,由Character.isLetter(c)视为字母。我认为大多数开发人员都在寻找这个功能:

private static boolean isLetterOrDigit(char c) {

return (c >= 'a' && c <= 'z') ||

(c >= 'A' && c <= 'Z') ||

(c >= '0' && c <= '9');

}

mr5 answered 2019-09-21T17:01:44Z

10 votes

从1.0.2版开始,Java角色类具有isLetterOrDigit方法

ChuanRocks answered 2019-09-21T17:02:14Z

7 votes

我最不知道,但这对我来说似乎很简单:

Character.isDigit(str.charAt(index))

Character.isLetter(str.charAt(index))

Cameron answered 2019-09-21T17:02:42Z

3 votes

比较其价值。 它应该在“ a”和“ z”,“ A”和“ Z”,“ 0”和“ 9”的值之间

YuppieNetworking answered 2019-09-21T17:03:09Z

2 votes

// check if ch is a letter

if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))

// ...

// check if ch is a digit

if (ch >= '0' && ch <= '9')

// ...

// check if ch is a whitespace

if ((ch == ' ') || (ch =='\n') || (ch == '\t'))

// ...

来源:[https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html]

retrazil answered 2019-09-21T17:03:41Z

-1 votes

import java.util.Scanner;

public class v{

public static void main(String args[]){

Scanner in=new Scanner(System.in);

String str;

int l;

int flag=0;

System.out.println("Enter the String:");

str=in.nextLine();

str=str.toLowerCase();

str=str.replaceAll("\\s","");

char[] ch=str.toCharArray();

l=str.length();

for(int i=0;i

if ((ch[i] >= 'a' && ch[i]<= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z')){

flag=0;

}

else

flag++;

break;

}

if(flag==0)

System.out.println("Onlt char");

}

}

Gowtham Prasath answered 2019-09-21T17:03:59Z

-1 votes

使用下面的代码

Character.isLetterOrDigit(string.charAt(index))

Ram Repaka answered 2019-09-21T17:04:35Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值