用另一个字符串环绕字符串

时间:2015-06-19 07:57:13

标签: java

我在Java中有任何utils方法可以让我用另一个字符串包围一个字符串吗?类似的东西:

surround("hello","%");

将返回"%hello%"

我只需要一种方法,因此代码会更好,然后添加前缀和后缀。如果没有必要,我也不想拥有自定义的utils类。

6 个答案:

答案 0 :(得分:7)

String.format可用于此目的:

String s = String.format("%%%s%%", "hello");

答案 1 :(得分:5)

不,但您始终可以创建一个方法来执行此操作:

public String surround(String str, String surroundingStr) {

    StringBuffer buffer = new StringBuffer();
    buffer.append(surroundingStr).append(str).append(surroundingStr);

    return buffer.toString();
}  

您还有另一种方法,但如果您想获得更好的表现,请不要这样做: -

public String surround(String str, String surroundingStr){

    return surroundingStr + str + surroundingStr;
}  

为什么不使用第二种方法?

众所周知,Java中的字符串是不可变的。当您将字符串连续三次时,除了原始字符串strsurroundingStr之外,它还会创建两个新的字符串对象。因此总共创建了4个字符串对象:

1. str
2. surroundingStr  
3. surroundingStr + str
4. (surroundingStr + str) + surroundingStr  

创建对象确实需要时间。因此,从长远来看,第二种方法会降低您在空间和时间方面的表现。因此,您可以选择使用哪种方法。

虽然在java 1.4

之后不是这种情况

由于+运算符的结束字符串在后台使用StringBuffer。因此,如果Java版本为1.4或更高版本,则使用第二种方法不是问题。但是,如果你想整理字符串是一个循环,请小心。

我的建议:

使用StringBuffer的{​​{1}}。

答案 2 :(得分:3)

不是我所知道的,但正如已经评论过的那样,它是你自己可以写的一行代码。

private String SurroundWord(String word, String surround){
    return surround + word + surround;   
}

请注意,这将返回一个New String对象,而不是编辑原始字符串。

答案 3 :(得分:2)

创建一个新方法:

public String surround(String s, String surr){
    return surr+s+surr;
}

答案 4 :(得分:2)

测试以下内容并返回%hello%

public static void main (String[] args) throws java.lang.Exception
{
    System.out.println(surround("hello", "%")); 
}
public static String surround(String s, String sign) {
    return sign + s + sign;
}

答案 5 :(得分:0)

StringUtils.wrap(str,wrapWith)就是你要找的东西。 如果apache common utils已经是依赖项的一部分,那么你可以使用它。否则正如其他人已经提到过最好添加到您的基地。没什么大不了的。

https://github.com/apache/commons-lang/blob/master/src/main/java/org/apache/commons/lang3/StringUtils.java