删除部分字符串后的所有内容

时间:2012-09-05 08:36:11

标签: java android string replace

我有一个由三部分组成的字符串。我希望字符串是(改变),分离部分(不改变)和最后改变的部分。我想删除分离部分和结束部分。分离部分是“ - ”所以我想知道的是,如果有一种方法可以在字符串的某个部分之后删除所有内容。

这种情况的一个例子是,如果我想把这个:“Stack Overflow - 一个问题的地方”:“Stack Overflow”。任何帮助表示赞赏!

10 个答案:

答案 0 :(得分:45)

例如,你可以这样做:

String result = input.split("-")[0];

String result = input.substring(0, input.indexOf("-"));

(并添加相关的错误处理)

答案 1 :(得分:14)

apache commons StringUtils提供substringBefore方法

StringUtils.substringBefore("Stack Overflow - A place to ask stuff", " - ")

答案 2 :(得分:3)

您可以使用此

String substr = mysourcestring.substring(0,mysourcestring.indexOf("-"));

答案 3 :(得分:2)

科特林溶液

使用内置的Kotlin substringBefore函数(Documentation):

var string = "So much text - no - more"
string = string.substringBefore(" - ") // "So much text"

它还有一个可选的第二个参数,如果未找到分隔符,则为返回值。默认值为原始字符串

string.substringBefore(" - ", "fail")  // "So much text"
string.substringBefore(" -- ", "fail") // "fail"
string.substringBefore(" -- ")         // "So much text - no - more"

答案 4 :(得分:1)

也许这就是你要找的东西:

String str="Stack Overflow - A place to ask stuff";

String newStr = str.substring(0, str.indexOf("-"));

答案 5 :(得分:1)

我为所有方法创建了示例程序,SubString似乎是最快的。

Using builder : 54
Using Split : 252
Using Substring  : 10

以下是示例程序代码

            for (int count = 0; count < 1000; count++) {
        // For JIT
    }
    long start = System.nanoTime();
    //Builder
    StringBuilder builder = new StringBuilder(
            "Stack Overflow - A place to ask stuff");
    builder.delete(builder.indexOf("-"), builder.length());
    System.out.println("Using builder : " + (System.nanoTime() - start)
            / 1000);
    start = System.nanoTime();
    //Split
    String string = "Stack Overflow - A place to ask stuff";
    string.split("-");
    System.out.println("Using Split : " + (System.nanoTime() - start)
            / 1000);
    //SubString
    start = System.nanoTime();
    String string1 = "Stack Overflow - A place to ask stuff";
    string1.substring(0, string1.indexOf("-"));
    System.out.println("Using Substring : " + (System.nanoTime() - start)
            / 1000);
    return null;

答案 6 :(得分:0)

这将满足您的需求:

newValue = oldValue.substring(0, oldValue.indexOf("-");

答案 7 :(得分:0)

String line = "deltaasm:/u01/app/oracle/product/11.2.0/dbhome_1:N        # line addred by agent";

    String rep = "deltaasm:";
    String after = "";

    String pre = ":N";
    String aft = "";
    String result = line.replaceAll(rep, after);
    String finalresult = result.replaceAll(pre, aft);
    System.out.println("Result***************" + finalresult);

    String str = "deltaasm:/u01/app/oracle/product/11.2.0/dbhome_1:N        # line addred by agent";

    String newStr = str.substring(0, str.indexOf("#"));
    System.out.println("======" + newStr);

答案 8 :(得分:0)

您可以通过我的utils方法执行此操作。

public static String makeTwoPart(String data, String cutAfterThisWord){
    String result = "";

    String val1 = data.substring(0, data.indexOf(cutAfterThisWord));

    String va12 = data.substring(val1.length(), data.length());

    String secondWord = va12.replace(cutAfterThisWord, "");

    Log.d("VAL_2", secondWord);

    String firstWord = data.replace(secondWord, "");

    Log.d("VAL_1", firstWord);

    result = firstWord + "\n" + secondWord;


    return result;
}`

答案 9 :(得分:0)

一种安全的方法,可以安全地删除字符串,直到出现或可能不存在令牌时都保留搜索到的部分。

String input = "Stack Overflow - A place to ask stuff";
String token = " - ";
String result = input.contains(token)
  ? token + StringUtils.substringBefore(string, token)
  : input;
// Returns "Stack Overflow - "
  

Apache StringUtils函数为null,empty和没有匹配安全性