(经典问题)判断字符串是否由空格组成,空格分为全角和半角

时间:2022-11-05 14:58:27
如何判断一个String是否全由空格组成?
大家一起来讨论一下。后面我会给出我自己的解决方法,大家一起学习。

16 个解决方案

#1


自己先顶上来先

#2


当然可以,半角ascii码是32,差一下汉字内码表,看全角空格是什么码

#3


不懂,除了charAt还有其他什么好办法?

#4


用正则表达式matches("[  ]+")一下就出来了,这有啥讨论的,好像炒作似的

#5


引用 2 楼 nanman 的回复:
当然可以,半角ascii码是32,差一下汉字内码表,看全角空格是什么码


正解,貌似Character类没有判断空格的方法,只能用if对内码表了

#6


引用 3 楼 smartcatiboy 的回复:
不懂,除了charAt还有其他什么好办法?

charAt(int index)是返回指定索引处的 char 值
我的问题是给一个String str值,判断str的值是否全部是由空格组成或者全部由空白组成。

#7


正则表达式吧,String regex = "^[\\u0020\\u3000]*$";

#8


引用 4 楼 jonay 的回复:
用正则表达式matches("[  ]+")一下就出来了,这有啥讨论的,好像炒作似的

不是什么炒作的事情,只是想大家讨论一下,看一下大家都是如何解决这种问题的,又有多少种解决的方法,这也可以给新手们一个参考吗,同样我们也可以学习别人解决问题的思路去解决别的问题啊。
如果你不用这种方法,你又如何去解决呢?我希望想问题可以多想一下能不能用其他不同的方法来解决问题。

#9


直接matches方法判断就好了:
String str1 = " ";
String str2 = "                                  ";

System.out.println(str1.matches("\\s+"));
System.out.println(str2.matches("\\s+"));

#10


\\s匹配的东西太多了吧,包括换行、制表符这些

#11


引用 9 楼 justinavril 的回复:
直接matches方法判断就好了:
Java codeString str1="";
        String str2="";
        
        System.out.println(str1.matches("\\s+"));
        System.out.println(str2.matches("\\s+"));

如果是全角的空格的话,那判断的结果就会是错误的了。
4楼和7楼的正则可以判断得了全角的空格。

#12


我7楼的和4楼的基本是一回事,只不过用了unicode编码而且多加了字符串头尾的判断,不过这个判断我觉得应该加上~

#13


对于这个问题我是这样想的,因为我的正则不是很了解,不能写出满足我需求的正则出来,所以我使用下面的方法实现了:(判断是一个字符串是否由 空白组成,不仅仅是空格)

public static String trim(String str) {
//去掉字符串两头空白
int len = str.length();
int st = 0;     
char[] val = str.toCharArray();    

while ((st < len) && Character.isWhitespace(val[st])) {
st++;
}
while ((st < len) && Character.isWhitespace(val[len-1])) {
len--;
}
return ((st > 0) || (len < str.length())) ? str.substring(st, len) : str;
    }
public static boolean isWhiteSpace(String str){
//去掉两头空白,判断是否为空,返回值
return "".equals(trim(str));
}

如果能写出正则表达式,那使用正则是很简单的。

#14


除了空格制表符还有什么吗?"^[\\s\\u3000]*$"你可以试试看这个

#15


正则表达式能干的事

#16



public class Test{
public static void main(String[] args){
String check = "      ";//包含了全角个半角的空格
System.out.println(check(check));
}

public static boolean check(String check){
//将所有的全角空格和半角空格都替换掉,然后判断长度
return check.replaceAll(" ","").replaceAll(" ","").length() == 0;
}
}

#1


自己先顶上来先

#2


当然可以,半角ascii码是32,差一下汉字内码表,看全角空格是什么码

#3


不懂,除了charAt还有其他什么好办法?

#4


用正则表达式matches("[  ]+")一下就出来了,这有啥讨论的,好像炒作似的

#5


引用 2 楼 nanman 的回复:
当然可以,半角ascii码是32,差一下汉字内码表,看全角空格是什么码


正解,貌似Character类没有判断空格的方法,只能用if对内码表了

#6


引用 3 楼 smartcatiboy 的回复:
不懂,除了charAt还有其他什么好办法?

charAt(int index)是返回指定索引处的 char 值
我的问题是给一个String str值,判断str的值是否全部是由空格组成或者全部由空白组成。

#7


正则表达式吧,String regex = "^[\\u0020\\u3000]*$";

#8


引用 4 楼 jonay 的回复:
用正则表达式matches("[  ]+")一下就出来了,这有啥讨论的,好像炒作似的

不是什么炒作的事情,只是想大家讨论一下,看一下大家都是如何解决这种问题的,又有多少种解决的方法,这也可以给新手们一个参考吗,同样我们也可以学习别人解决问题的思路去解决别的问题啊。
如果你不用这种方法,你又如何去解决呢?我希望想问题可以多想一下能不能用其他不同的方法来解决问题。

#9


直接matches方法判断就好了:
String str1 = " ";
String str2 = "                                  ";

System.out.println(str1.matches("\\s+"));
System.out.println(str2.matches("\\s+"));

#10


\\s匹配的东西太多了吧,包括换行、制表符这些

#11


引用 9 楼 justinavril 的回复:
直接matches方法判断就好了:
Java codeString str1="";
        String str2="";
        
        System.out.println(str1.matches("\\s+"));
        System.out.println(str2.matches("\\s+"));

如果是全角的空格的话,那判断的结果就会是错误的了。
4楼和7楼的正则可以判断得了全角的空格。

#12


我7楼的和4楼的基本是一回事,只不过用了unicode编码而且多加了字符串头尾的判断,不过这个判断我觉得应该加上~

#13


对于这个问题我是这样想的,因为我的正则不是很了解,不能写出满足我需求的正则出来,所以我使用下面的方法实现了:(判断是一个字符串是否由 空白组成,不仅仅是空格)

public static String trim(String str) {
//去掉字符串两头空白
int len = str.length();
int st = 0;     
char[] val = str.toCharArray();    

while ((st < len) && Character.isWhitespace(val[st])) {
st++;
}
while ((st < len) && Character.isWhitespace(val[len-1])) {
len--;
}
return ((st > 0) || (len < str.length())) ? str.substring(st, len) : str;
    }
public static boolean isWhiteSpace(String str){
//去掉两头空白,判断是否为空,返回值
return "".equals(trim(str));
}

如果能写出正则表达式,那使用正则是很简单的。

#14


除了空格制表符还有什么吗?"^[\\s\\u3000]*$"你可以试试看这个

#15


正则表达式能干的事

#16



public class Test{
public static void main(String[] args){
String check = "      ";//包含了全角个半角的空格
System.out.println(check(check));
}

public static boolean check(String check){
//将所有的全角空格和半角空格都替换掉,然后判断长度
return check.replaceAll(" ","").replaceAll(" ","").length() == 0;
}
}