我的字符串定义为
文本1:text2的:文字3:文本4:text5
我希望输出为
文本1:text2的:文字3
使用String方法。
我已尝试使用lastIndexOf
,然后使用substring
,然后再使用lastIndexOf
。
我想两次调用lastIndexOf
来避免这三个步骤
有没有更好的方法来实现这一目标?
答案 0 :(得分:2)
您可以通过运行循环来迭代字符串的字符,从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));
这为您提供了所需的输出。
输出:
text1:text2:text3
答案 1 :(得分:1)
您可以使用Java split()
- 方法:
String string = "text1:text2:text3:text4:text5";
String[] text = string.split(":");
String text1 = text[0];
String text2 = text[1];
String text3 = text[2];
然后直接生成输出或使用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] + " ");
}
<强>输出:强>
text1 text2 text3
使用这种方法的好处是,您的输入和输出可能会稍微复杂一些,因为您可以打印单词的顺序。
示例:强>
考虑尤达大师。
他有一种奇怪的谈话方式,经常混淆句子结构。当他自我介绍时,他说(不正确!)的感觉:“尤达大师,我的名字是。”
现在,您想要创建一个通用翻译器 - 当然 - 修复从一个物种到另一个物种的错误。
您接受输入字符串并将其“划分”为其部分:
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];
数组“text”现在按照您输入的顺序包含句子。现在您的翻译人员可以分析结构并进行更正:
String correctSentenceStructure = posessivePronoun + " " + noun + " " + linkingVerb + " " + jediTitle + " " + lastName;
System.out.println(correctSentenceStructure);
<强>输出:强>
"My name is Master Yoda"
工作翻译可能是迈向银河系的又一步。
答案 2 :(得分: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)
答案 3 :(得分: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;
}
或者,不要在substring
的每次调用之间使用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
是字符串中剩余的:
的数量。
答案 4 :(得分:0)
Maby尝试这一行s.substring(0, 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));
}
}
输出:
文本1:text2的:文字3