在java中,如何在字符串的字符两侧添加空格?

在java中,如何在字符串的字符两侧添加空格?,java,string,Java,String,在java中,如何在字符串的字符两侧添加空格 例如,假设字符串为“s_id=5和s_name!=6”,如果我想在=的两侧添加空格,那么输出字符串将类似于“s_id=5和s_name!=6” 我正在尝试使用替换和包含方法 我检查是否(str.contains(“=”),然后将其替换为(“=”),但它也为添加了空间=您可以使用String类中的replaceAll()方法来帮助实现这一点 value = value.replaceAll("([$_\\d\\w])([^$_\\d\\w]+)", "

在java中,如何在字符串的字符两侧添加空格

例如,假设字符串为“
s_id=5和s_name!=6
”,如果我想在
=
的两侧添加空格,那么输出字符串将类似于“
s_id=5和s_name!=6

我正在尝试使用替换和包含方法


我检查
是否(str.contains(“=”)
,然后将其替换为(
“=”
),但它也为
添加了空间=

您可以使用
String
类中的
replaceAll()
方法来帮助实现这一点

value = value.replaceAll("([$_\\d\\w])([^$_\\d\\w]+)", "$1 $2")
             .replaceAll("([^$_\\d\\w]+)([$_\\d\\w])", "$1 $2")
             .replaceAll("\\s+", " "))
例如:

final String spacedEquals = " = ";
String s = "s_id=5 and s_name!=6";

//this will add a space on either side of the '='
s.replaceAll("=", spacedEquals); 
希望这有帮助

试试这个方法

    private String replace( String str, String pattern, String replace ) 
{
    int s = 0;
    int e = 0;
    StringBuffer result = new StringBuffer();

    while ( (e = str.indexOf( pattern, s ) ) >= 0 ) 
    {
        result.append(str.substring( s, e ) );
        result.append( replace );
        s = e+pattern.length();
    }
    result.append( str.substring( s ) );
    return result.toString();
}
使用正则表达式:

s = s.replaceAll("(?<![><!+-])[=]", " = ");
s=s.replaceAll((?)?
此代码将向任何运算符添加分隔符,并删除不必要的空格

s_id=5和s_name!=6
将变成
s_id=5和s_name!=6


考虑到变量可以由$数字或字母组成,您需要在添加空格的字符之后/之前决定。您应该指定在
=
之前应忽略哪些其他字符,例如,决定是
=
还是
请更新您的问题,因为您的问题误导读者相信您确实需要字符串替换,而这是基于规则的替换。具体将有助于获得更具体的答案。从传统上讲,请提供在“替换”前后添加空格的完整标准=“。从您的示例来看,您的规则似乎是任意的,您能更具体一点吗?目标是在字符串(=,!=)中每个运算符的两侧添加空格。当我检查字符是否为=,我会添加空格,但也会为!=添加空格。因为它还包含=这是我要解决的问题,我想为严格相同的字符添加空格…希望现在它更具体..不,它不起作用..代码的输出类似于:s_id=5和s_name!=6 I.e.它为!=也…谢谢…它解决了我的问题..但我对正则表达式知之甚少。你能给正则表达式一个区分>=和>的方法吗?意思是如果我想在>=的两边都添加空格,那么当你想在较长的字符串周围添加空格而忽略较短的字符串时,它不应该在>的情况下添加当然,您可以完全避免使用正则表达式:您可以调用
s.replaceAll(“>=”,“>=”)
,当它们不在一起时,它将忽略
=
。学习正则表达式是一件好事,从它开始就好了。@dasblinkenlight这里您给出了忽略+,和!等的示例。如果我也想忽略“before=?@Sam:试试这本书或其他任何一本书”正则表达式”的标题和良好的评论。