Java 检测字符串的存在并删除所有字符,直到找到字符串时字符串结束

Java 检测字符串的存在并删除所有字符,直到找到字符串时字符串结束,java,string,str-replace,Java,String,Str Replace,我有以下Java字符串: “你好,我叫詹姆斯。另请参见>我叫丹” 我想检测我的字符串是否包含“See alway”,如果是这种情况,我想只检索字符串的开头,而不在“See alway”之后检索文本 我想要“你好,我叫詹姆斯” 如何使用Java实现这一点?字符串将允许您查找“请参见>”,并使用它可以通过计算索引来提取第一部分和最后一部分。拯救家庭作业 请注意,我还会在最后一行附加一个.trim(),但这是您的选择 public String trimSeeAlso(String string) {

我有以下Java字符串:

“你好,我叫詹姆斯。另请参见>我叫丹”

我想检测我的字符串是否包含“See alway”,如果是这种情况,我想只检索字符串的开头,而不在“See alway”之后检索文本

我想要“你好,我叫詹姆斯”


如何使用Java实现这一点?

字符串将允许您查找“请参见>”,并使用它可以通过计算索引来提取第一部分和最后一部分。

拯救家庭作业

请注意,我还会在最后一行附加一个.trim(),但这是您的选择

public String trimSeeAlso(String string) {
    int index = string.indexOf("See also >");
    if (index < 0) return string;

    return string.substring(0, index);
}
公共字符串修剪另请参见(字符串){
int index=string.indexOf(“另请参见>”);
if(索引<0)返回字符串;
返回string.substring(0,索引);
}
考虑使用正则表达式:

    public static void main(String... strings) {
    String string = "Hello, my name is james. See also > My name is Dan";
    String string2 = "Hello, my name is james. My name is Dan";
    String res[] = string.split("See also >");
    System.out.println(res[0]);
    res = string2.split("See also >");
    System.out.println(res[0]);
}
输出

Hello, my name is james. 
Hello, my name is james. My name is Dan
这还允许您获取字符串的所有部分,以“请参见>”分隔:

输出:

Hello, my name is james.  |  My name is Dan  |  My name is Dan | 

我的方法是使用
String
的函数

split(String regex)
返回一个
String[]
,因此您需要访问
String
数组中的第一个且仅第一个
String

String newString = oldString.split("See also >")[0].trim;
上面的代码采用旧的
字符串

"Hello, my name is james. See also > My name is Dan"
将其拆分为多个部分:

{"Hello, my name is james. ", " My name is Dan"}
获取数组中的第一个
字符串

"Hello, my name is james. "
它的额外空间:

"Hello, my name is james."

并将该值指定给新的
字符串

,可以。我建议你有了一些代码后再问一次。为什么在这里使用正则表达式?是否有任何迹象表明需要实际的模式匹配?如果分隔符更改为包含正则表达式视为“特殊”的字符的文本,这只是自找麻烦。正如我在对其他答案的评论中所说的,我认为在这里使用正则表达式将是一个错误。很容易忘记它需要一个正则表达式,结果意外地在一些不合适的事情上分裂
indexOf
后跟
substring
对我来说似乎简单得多。事实上,一个“.trimEnd()”更好地满足规范要求,但Java不是C#,所以您必须自己编写这个:)
"Hello, my name is james."