大家一起来讨论一下。后面我会给出我自己的解决方法,大家一起学习。
16 个解决方案
#1
自己先顶上来先
#2
当然可以,半角ascii码是32,差一下汉字内码表,看全角空格是什么码
#3
不懂,除了charAt还有其他什么好办法?
#4
用正则表达式matches("[ ]+")一下就出来了,这有啥讨论的,好像炒作似的
#5
正解,貌似Character类没有判断空格的方法,只能用if对内码表了
#6
charAt(int index)是返回指定索引处的 char 值
我的问题是给一个String str值,判断str的值是否全部是由空格组成或者全部由空白组成。
#7
正则表达式吧,String regex = "^[\\u0020\\u3000]*$";
#8
不是什么炒作的事情,只是想大家讨论一下,看一下大家都是如何解决这种问题的,又有多少种解决的方法,这也可以给新手们一个参考吗,同样我们也可以学习别人解决问题的思路去解决别的问题啊。
如果你不用这种方法,你又如何去解决呢?我希望想问题可以多想一下能不能用其他不同的方法来解决问题。
#9
直接matches方法判断就好了:
String str1 = " ";
String str2 = " ";
System.out.println(str1.matches("\\s+"));
System.out.println(str2.matches("\\s+"));
#10
\\s匹配的东西太多了吧,包括换行、制表符这些
#11
如果是全角的空格的话,那判断的结果就会是错误的了。
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
正解,貌似Character类没有判断空格的方法,只能用if对内码表了
#6
charAt(int index)是返回指定索引处的 char 值
我的问题是给一个String str值,判断str的值是否全部是由空格组成或者全部由空白组成。
#7
正则表达式吧,String regex = "^[\\u0020\\u3000]*$";
#8
不是什么炒作的事情,只是想大家讨论一下,看一下大家都是如何解决这种问题的,又有多少种解决的方法,这也可以给新手们一个参考吗,同样我们也可以学习别人解决问题的思路去解决别的问题啊。
如果你不用这种方法,你又如何去解决呢?我希望想问题可以多想一下能不能用其他不同的方法来解决问题。
#9
直接matches方法判断就好了:
String str1 = " ";
String str2 = " ";
System.out.println(str1.matches("\\s+"));
System.out.println(str2.matches("\\s+"));
#10
\\s匹配的东西太多了吧,包括换行、制表符这些
#11
如果是全角的空格的话,那判断的结果就会是错误的了。
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;
}
}