Java 如何使用字符串函数将字符显示到字符串的特定索引?

Java 如何使用字符串函数将字符显示到字符串的特定索引?,java,string,Java,String,我将我的字符串定义为 text1:text2:text3:text4:text5 我想得到输出作为 text1:text2:text3 使用字符串方法 我尝试过使用lastIndexOf,然后使用子字符串,然后再次使用lastIndexOf。 我想通过两次调用lastIndexOf来避免这三个步骤。 有更好的方法来实现这一点吗?您可以通过运行循环来迭代字符串的字符,从index=0到index=lastIndexOf'3'。代码如下: String s = "text1:text2:text3:

我将我的字符串定义为

text1:text2:text3:text4:text5

我想得到输出作为

text1:text2:text3

使用字符串方法

我尝试过使用lastIndexOf,然后使用子字符串,然后再次使用lastIndexOf。 我想通过两次调用lastIndexOf来避免这三个步骤。
有更好的方法来实现这一点吗?

您可以通过运行循环来迭代字符串的字符,从index=0到index=lastIndexOf'3'。代码如下:

String s = "text1:text2:text3:text4:text5";
for(int i = 0; i < = s.lastIndexOf('3'); i++)
    System.out.print(s.charAt(i));

您可以通过运行一个循环来迭代从index=0到index=lastIndexOf'3'的字符串的字符来实现这一点。代码如下:

String s = "text1:text2:text3:text4:text5";
for(int i = 0; i < = s.lastIndexOf('3'); i++)
    System.out.print(s.charAt(i));
您可以使用Java拆分方法:

然后直接或使用for循环生成输出:

// directly
System.out.println(text1 + ":" + text2 + ":" + text3);

// for-loop. Just enter, how many elements you want to display. 
for(int i = 0; i < 3; i++){
    System.out.println(text[i] + " ");
}
使用此方法的优点是,您的输入和输出可能会稍微复杂一些,因为您可以控制文字的打印顺序

例如:

以尤达大师为例

他说话的方式很奇怪,经常把句子结构弄混。当他自我介绍时,他说的是错误的!意识:尤达大师,我的名字是

现在,你想创建一个通用的翻译器,它——当然——在从一个物种到另一个物种的翻译过程中修复这些错误

接收输入字符串并将其分为几个部分:

String string = "Master:Yoda:my:name:is"
String[] text = string.split(":");
String jediTitle = text[0];
String lastName = text[1]; 
String posessivePronoun = text[2];
String noun = text[3];
String linkingVerb = text[4];
现在,数组文本按您输入的顺序包含句子。现在,您的翻译人员可以分析结构并更正它:

String correctSentenceStructure = posessivePronoun + " " + noun + " "  + linkingVerb + " "  + jediTitle + " " + lastName;    
System.out.println(correctSentenceStructure);
输出:

工作中的翻译器可能是迈向银河系的另一步。

您可以使用Java split方法:

然后直接或使用for循环生成输出:

// directly
System.out.println(text1 + ":" + text2 + ":" + text3);

// for-loop. Just enter, how many elements you want to display. 
for(int i = 0; i < 3; i++){
    System.out.println(text[i] + " ");
}
使用此方法的优点是,您的输入和输出可能会稍微复杂一些,因为您可以控制文字的打印顺序

例如:

以尤达大师为例

他说话的方式很奇怪,经常把句子结构弄混。当他自我介绍时,他说的是错误的!意识:尤达大师,我的名字是

现在,你想创建一个通用的翻译器,它——当然——在从一个物种到另一个物种的翻译过程中修复这些错误

接收输入字符串并将其分为几个部分:

String string = "Master:Yoda:my:name:is"
String[] text = string.split(":");
String jediTitle = text[0];
String lastName = text[1]; 
String posessivePronoun = text[2];
String noun = text[3];
String linkingVerb = text[4];
现在,数组文本按您输入的顺序包含句子。现在,您的翻译人员可以分析结构并更正它:

String correctSentenceStructure = posessivePronoun + " " + noun + " "  + linkingVerb + " "  + jediTitle + " " + lastName;    
System.out.println(correctSentenceStructure);
输出:

一个能工作的翻译可能是迈向银河系的又一步。

你可以试试:

String test = "text1:text2:text3:text4:text5";
String splitted = text.split(":")
String result = "";
for (int i = 0; i <3; i++) {
    result += splitted[i] + ":"
}
result = result.substring(0, result.length() -1)
你可以试试:

String test = "text1:text2:text3:text4:text5";
String splitted = text.split(":")
String result = "";
for (int i = 0; i <3; i++) {
    result += splitted[i] + ":"
}
result = result.substring(0, result.length() -1)

正则表达式可用于标识字符串的正确部分:

private static Pattern PATTERN = Pattern.compile("([^:]*:){2}[^:]*(?=:|$)");

public static String find(String input) {
    Matcher m = PATTERN.matcher(input);
    return m.find() ? m.group() : null;
}
或者,不要在每次调用lastIndexOf之间使用子字符串,而是使用限制索引范围的lastIndexOf版本:

public static String find(String input, int colonCount) {
    int lastIndex = input.length();
    while (colonCount > 0) {
        lastIndex = input.lastIndexOf(':', lastIndex-1);
        colonCount--;
    }
    return lastIndex >= 0 ? input.substring(0, lastIndex) : null;
}

请注意,此处colonCount是字符串中遗漏的:的数目。

可以使用正则表达式来标识字符串的正确部分:

private static Pattern PATTERN = Pattern.compile("([^:]*:){2}[^:]*(?=:|$)");

public static String find(String input) {
    Matcher m = PATTERN.matcher(input);
    return m.find() ? m.group() : null;
}
或者,不要在每次调用lastIndexOf之间使用子字符串,而是使用限制索引范围的lastIndexOf版本:

public static String find(String input, int colonCount) {
    int lastIndex = input.length();
    while (colonCount > 0) {
        lastIndex = input.lastIndexOf(':', lastIndex-1);
        colonCount--;
    }
    return lastIndex >= 0 ? input.substring(0, lastIndex) : null;
}
请注意,此处colonCount是字符串中遗漏的:的编号。

可以尝试这一行:s.substring0,s.lastIndexOf'3'+1

完整示例:

package testing.project;

public class Main {

    public static void main(String[] args) {
        String s = "text1:text2:text3:text4:text5";
        System.out.println(s.substring(0, s.lastIndexOf('3')+1));
    }
}
输出:

text1:text2:text3

也许可以试试这一行,s.substring0,s.lastIndexOf'3'+1

完整示例:

package testing.project;

public class Main {

    public static void main(String[] args) {
        String s = "text1:text2:text3:text4:text5";
        System.out.println(s.substring(0, s.lastIndexOf('3')+1));
    }
}
输出:

text1:text2:text3


你能进一步解释你的问题吗?不清楚你想解决什么问题,因为你给出的例子太抽象,不够具体,人们无法给出一个好的答案。你能进一步解释你的问题吗?现在还不清楚你想解决什么问题,因为你给出的例子太抽象,不够具体,人们无法给出一个好的答案。