Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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_Android_Regex_Pattern Matching_Space - Fatal编程技术网

Java 如何使用正则表达式仅删除单词之间的空格,而不删除数字或特殊字符之间的空格?

Java 如何使用正则表达式仅删除单词之间的空格,而不删除数字或特殊字符之间的空格?,java,android,regex,pattern-matching,space,Java,Android,Regex,Pattern Matching,Space,我有一根这样的绳子 ab cd 1234567 1234567 ef gh 1234567 1234567 ij kl - - - - abcd 1234567 1234567 efgh 1234567 1234567 ijkl - - - - 我希望输出像这样 ab cd 1234567 1234567 ef gh 1234567 1234567 ij kl - - - - abcd 1234567 1234567 efgh 1234567 1234567 ijkl - - - - 如

我有一根这样的绳子

ab cd 1234567 1234567 ef gh 1234567 1234567 ij kl - - - -
abcd 1234567 1234567 efgh 1234567 1234567 ijkl - - - -
我希望输出像这样

ab cd 1234567 1234567 ef gh 1234567 1234567 ij kl - - - -
abcd 1234567 1234567 efgh 1234567 1234567 ijkl - - - -
如何做到这一点?目前,我正在使用以下,它不工作

result = result.trim().replaceAll("(\\w)(\\s+)([\\.,])", "");

谢谢。

我想这个模式适合你
/(?删除您可能使用的ASCII字母之间的所有空白

result = result.trim().replaceAll("(?<=[A-Za-z])\\s+(?=[A-Za-z])", "");
result = result.trim().replaceAll("(?<=\\p{L})\\s+(?=\\p{L})", "");

result=result.trim()

这是未经测试的,在这里用文本编码,因此您可能需要调整它,但您得到了图片

String myString = 'ab cd 1234567 1234567 ef gh 1234567 1234567 ij kl - - - -'
//break it up into array split by space
String[] chunks = myString.split(" ")
StringBuilder sb = new StringBuilder();
Int x = 0
while (x < chunks.length) 
{ 
    if(isNumeric(chunks[x])){
        //if num add space back
        sb.append(chunk[x]).append(" ")
    }else if(x < chunks.length - 1 && !isNumeric(chunks[x + 1])){
        //if it's string & next value is also a string
        sb.append(chunk[x])
    }else{
        //if it's a string, but next is numeric, we need space
        sb.append(chunk[x]).append(" ")
    }
    x++;
} 

//convert back to string with space between letters removed
String correctedString = builder.toString().trim();
String myString='ab cd 1234567 1234567 ef gh 1234567 1234567 ij kl--'
//将其拆分为按空间分割的数组
String[]chunks=myString.split(“”)
StringBuilder sb=新的StringBuilder();
Int x=0
while(x
Try
replaceAll(“(?谢谢,第一个有效-第二个抛出此错误-java.util.regex.PatternSyntaxException:索引3附近的regexp模式中的语法错误W/System.err:(?U)(?对不起,是的,这是Android,您不需要告诉它的regex识别Unicode,它已经识别Unicode。在java中,您必须添加
(?U)<代码> > <代码> >代码>可以匹配所有Unicode白皮书。很高兴它对你有用。如果我的答案对你有帮助(并且所有其他答案都是有用的),请考虑一下投票。