Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测字符串是否仅由一种字符组成_Java_String_Character - Fatal编程技术网

Java 检测字符串是否仅由一种字符组成

Java 检测字符串是否仅由一种字符组成,java,string,character,Java,String,Character,我想知道字符串是否只由一种类型的字符重复组成 例如,我想检测一个字符串是否只由“b”组成,因此“bb”、“bbbbbb”、“bbbbbbbbb” 获取字符串的第一个字符,并将其与剩余字符进行比较,如果它没有更改,则该字符串只有一种字符类型(此解决方案适用于非BMP unicode) public boolean SameCracterInString(字符串字符串){ if(string==null | | string.isEmpty()) 返回false; 对于(int i=1;i和< Ca

我想知道
字符串
是否只由一种类型的字符重复组成


例如,我想检测一个
字符串
是否只由“b”组成,因此“bb”、“bbbbbb”、“bbbbbbbbb”

获取字符串的第一个字符,并将其与剩余字符进行比较,如果它没有更改,则该字符串只有一种字符类型(此解决方案适用于非BMP unicode)

public boolean SameCracterInString(字符串字符串){
if(string==null | | string.isEmpty())
返回false;
对于(int i=1;i
获取字符串的第一个字符,并将其与剩余字符进行比较,如果它没有更改,则字符串只有一种字符类型(此解决方案适用于非BMP unicode)

public boolean SameCracterInString(字符串字符串){
if(string==null | | string.isEmpty())
返回false;
对于(int i=1;i
正则表达式怎么样

String pattern = "([a-zA-Z])\\1*";

if (string.matches(pattern)) {
    // The string contains is made up of the same character...

}

正则表达式怎么样

String pattern = "([a-zA-Z])\\1*";

if (string.matches(pattern)) {
    // The string contains is made up of the same character...

}
使用

使用反向引用的内容

 boolean b = Pattern.matches("^(.)\\1+$", "aaaaaaa");
 //true

 b = Pattern.matches("^(.)\\1+$", "aaaabbbbaaa");
 //false
如果您还想匹配一个1个字符的字符串,请使用将正则表达式中的
+
更改为
*

String regex = "^" + str.charAt(0) + "+$"
return str.replaceAll(regex,"").length() == 0 ? true : false;
使用反向引用的内容

 boolean b = Pattern.matches("^(.)\\1+$", "aaaaaaa");
 //true

 b = Pattern.matches("^(.)\\1+$", "aaaabbbbaaa");
 //false
如果还想匹配一个1个字符的字符串,请将正则表达式中的
+
更改为
*

String regex = "^" + str.charAt(0) + "+$"
return str.replaceAll(regex,"").length() == 0 ? true : false;
我提出了许多其他的方法来实现这一点,但是使用正则表达式(如上所述)是我能想出的唯一简单的方法,可以正确处理unicode基本多语言平面之外的字符,例如

System.err.println(isOneChar(“
我提出了许多其他的方法来实现这一点,但是使用正则表达式(如上所述)是我能想出的唯一简单的方法,可以正确处理unicode基本多语言平面之外的字符,例如



System.err.println(isOneChar)(“但这会失败,例如,“11111”。然后将其从
a-zA-z
更改为其他内容。这不是一个最终解决方案,如果他愿意,他可以根据自己的规格进行调整。有人愿意告诉我为什么他们否决了我吗?如果我错了,我想知道原因。我没有否决,但仍然缺少一件事,那就是你需要在两端锚定模式。也许你也可以需要一个
+
而不是
*
。使用+将拒绝单个字符串。匹配不需要锚,它总是尝试匹配整个字符串。但这会失败,例如,“11111”。然后将其从
a-zA-z
更改为其他内容。这不是一个最终解决方案,如果他愿意,他可以根据自己的规格进行调整。有人愿意告诉我为什么他们否决了我吗?如果我错了,我想知道原因。我没有否决,但仍然缺少一件事,那就是你需要在两端锚定模式。也许你也可以需要一个
+
而不是
*
。使用+将拒绝单个字符串。匹配不需要锚定,它总是尝试匹配整个字符串。您不需要在开始和结束时锚定模式吗?
^…$
您的意思是?我不确定我是否做对了。我认为这仍然可能是错误的。您会这样做吗不捕获只有一个字符长的案例?将
+
更改为
*
,您应该会很好。这很有趣。谢谢@Michael和Ted:)你不需要在开头和结尾锚定模式吗?
^…$
你的意思是?我不确定我是否做对了,我认为这可能仍然是错误的。你不会抓住只有一个字符长的案例吗?将
+
更改为
*
,你应该很好。这很有趣。谢谢@Michael和Ted:)如果STR以一个正则表达式元字符开始呢?这是避免反向引用的狡猾想法,但是它不起作用,因为您不能依赖于CARAT以基本的多语言平面之外的方式工作。请考虑这些<代码>系统.Er.PrtLn(“a”)。(Stras.ValueOf(“A”.CARAT(0)));< /C>和<代码> Stry.Er.PrtLn(“如果STR以一个正则表达式元字符开始呢?这是避免反向引用的狡猾想法,但是它不起作用,因为您不能依赖于CARAT以基本的多语言平面之外的方式工作。请考虑这些<代码>系统.Er.PrtLn(“a”)。(Stras.ValueOf(“A”.CARAT(0)));< /C>和< Case> Stray.Er.PrtLn(“谢谢。在写这个答案之前,我没有想到大多数使用chartAt、length或char原语的java代码可能是错的。谢谢。在写这个答案之前,我没有想到大多数使用chartAt、length或char原语的java代码可能是错的。