在Java中多次检查字符串的结尾?

在Java中多次检查字符串的结尾?,java,string,Java,String,所以在Java中,我知道str.endsWith(后缀)测试str是否以某物结尾。假设我有一个文本,里面有一行“你老了”。如何将“old”设置为变量,以便在控制台中打印出来 我知道我能做到: if(str.endsWith("old")){ String age = "old"; } 但我会有更多的选择,所以我必须: if(str.endsWith("option1")){ String age = "option1"; } if(str.endsWith("option2"

所以在Java中,我知道
str.endsWith(后缀)
测试str是否以某物结尾。假设我有一个文本,里面有一行“你老了”。如何将“old”设置为变量,以便在控制台中打印出来

我知道我能做到:

if(str.endsWith("old")){ 
   String age = "old";
}
但我会有更多的选择,所以我必须:

if(str.endsWith("option1")){ 
   String age = "option1";
}

if(str.endsWith("option2")){ 
   String age = "option2";
}

...
是否有一种更有效、更不冗长的方法来检查字符串结尾,而不是编写许多(可能是数百个)if语句

Format:
    setting: option
    setting2: option2
    setting3: option3 ...

无论“选项”是什么,我都想将其设置为变量。

您可以使用以下Java代码来解决您的问题:

String suffix = "old";

if(str.endsWith(suffix)) {
    System.out.println(suffix);
}

您可以使用以下Java代码来解决您的问题:

String suffix = "old";

if(str.endsWith(suffix)) {
    System.out.println(suffix);
}
你是说:

String phrase = "old";
if(str.endsWith(old)){ 
你是说:

String phrase = "old";
if(str.endsWith(old)){ 

如果你在使用句子,你想得到这个词,那么就去做吧

String word = str.substring(str.lastIndexOf(" "));
可能需要在lastIndexOf()之后加上+1以留出空格。
这就是你要找的吗?

如果你在处理句子,你想得到这个词,就去做吧

String word = str.substring(str.lastIndexOf(" "));
List<String> suffixes = new ArrayList<String>();
suffixes.add("old");
suffixes.add("young");

for(String s: suffixes)
{
    if (str.endsWith(s))
    {
        String age = s;

        // .... more of your code here...
    }
}
可能需要在lastIndexOf()之后加上+1以留出空格。
这就是你要找的吗?

打开你的文件,用
readLine()
方法读取这一行。然后,要获取字符串的最后一个单词,可以按照建议执行操作

打开文件,并使用
readLine()
方法读取该行。然后,要获取字符串的最后一个单词,您可以按照建议执行操作

这就是您要查找的内容吗

List<String> suffixes = new ArrayList<String>();
suffixes.add("old");
suffixes.add("young");

for(String s: suffixes)
{
    if (str.endsWith(s))
    {
        String age = s;

        // .... more of your code here...
    }
}
List后缀=new ArrayList();
后缀。添加(“旧”);
后缀。添加(“young”);
for(字符串s:后缀)
{
如果(str.endsWith)
{
字符串年龄=s;
//…更多的代码在这里。。。
}
}

这就是你要找的吗

List<String> suffixes = new ArrayList<String>();
suffixes.add("old");
suffixes.add("young");

for(String s: suffixes)
{
    if (str.endsWith(s))
    {
        String age = s;

        // .... more of your code here...
    }
}
List后缀=new ArrayList();
后缀。添加(“旧”);
后缀。添加(“young”);
for(字符串s:后缀)
{
如果(str.endsWith)
{
字符串年龄=s;
//…更多的代码在这里。。。
}
}

如果您担心重复非常相似的代码,答案总是(99%)创建一个函数,

因此,在您的情况下,您可以执行以下操作:

public void myNewFunction(String this, String that){
    if(this.endsWith(that)){ 
    String this = that;

    }
}

...

String str = "age: old";
myNewFunction(str, "old"); //Will change str
myNewFunction(str, "new"); //Will NOT change str

如果这太多了,您可以创建一个类来为您完成所有这些。在类中,您可以跟踪关键字列表。然后,创建一个将给定单词与每个关键字进行比较的方法。这样,您就可以在多个字符串上调用相同的函数,而无需附加参数

如果您担心重复非常相似的代码,答案总是(99%)创建一个函数,

因此,在您的情况下,您可以执行以下操作:

public void myNewFunction(String this, String that){
    if(this.endsWith(that)){ 
    String this = that;

    }
}

...

String str = "age: old";
myNewFunction(str, "old"); //Will change str
myNewFunction(str, "new"); //Will NOT change str

如果这太多了,您可以创建一个类来为您完成所有这些。在类中,您可以跟踪关键字列表。然后,创建一个将给定单词与每个关键字进行比较的方法。这样,您就可以在多个字符串上调用相同的函数,而无需附加参数

显示一些示例输入和输出,以及确定要提取多少“字符串结尾”的规则。
age:old
我想从结尾提取old。@Ken:“提取”是什么意思?显示一些示例。总是用“旧”这个字串吗?是在
冒号字符后面的东西吗?规则是什么?如果你在搜索“旧”,那么你在提取什么?“老”就是“老”。如果你想要“旧”的东西,那是一个不同的问题,但不是你现在问的问题。例如,如果您有像“My age is[someString]”这样的字符串,并且[someString]有不同的可能性,那么您可以使用正则表达式来查找它。对找到的字符串执行的操作仍然需要if/switch大小写,但至少解析将在一条语句中进行。显示一些示例输入和输出,以及确定要提取多少“字符串结尾”的规则。
age:old
我想从结尾提取old。@Ken:“提取”是什么意思?展示一些例子。总是用“旧”这个字串吗?是在
冒号字符后面的东西吗?规则是什么?如果你在搜索“旧”,那么你在提取什么?“老”就是“老”。如果你想要“旧”的东西,那是一个不同的问题,但不是你现在问的问题。例如,如果您有像“My age is[someString]”这样的字符串,并且[someString]有不同的可能性,那么您可以使用正则表达式来查找它。对找到的字符串执行的操作仍然需要if/switch大小写,但至少解析将在一条语句中完成。谢谢。这就是我想要的。我只是不擅长解释。谢谢。这就是我想要的。我只是不善于解释。