在没有正则表达式的情况下测试段的开始和结束时的“噪声”

时间:2013-12-10 12:30:28

标签: java regex string match

我正在编写以字符串形式接收数据段的代码。该字符串将具有不同的大小,但始终以相同的字符开头和结尾(开始:'<s-'结束:'-e>')。我想在段的开始和结束之前防止用户输入无效字符时出错。 e.g。

"fdslkjds<s-hello-e>"
"<s-there-e>dfsad"
"eiend<s-john-e>dfafsd"

我知道这可以通过导入正则表达式库(模式和匹配)来完成。但我想在不使用这些库的情况下尝试这一点。还有其他办法吗?我一直在寻找String库,但找不到我需要的确切方法。

3 个答案:

答案 0 :(得分:3)

我建议您查看StringsstartsWith()endsWith()方法。

我还建议你自己编写代码,但是如果你不想打扰它,这里有一些应该有用的代码:

String input = [your code here]
while(!input.startsWith("<s-") || !input.endsWith("-e>"))
{
    System.out.println("Error! Invalid input! Please try again:");
    input = [your code here]
}

答案 1 :(得分:0)

正如The Hat with the Hat所说,startsWithendsWith等字符串有足够的功能来实现你的目标。

if(!userString.startsWith("<s-") || !userString.endsWith("-e>")) {
  throw new Exception("Please do not enter invalid characters before the start and the end of the segment");
}

答案 2 :(得分:0)

您可以使用indexOflastIndexOf查找字符串中<s--e>的位置,并使用substring提取正确的子字符串,而无需任何字符串“噪声”。

String s = "eiend<s-john-e>dfafsd";
String s2 = s.substring(s.indexOf("<s-"), s.lastIndexOf("-e>") + 3);