所以我遇到了一个问题,我需要检查字符串中简单的开始和结束 HTML 标签。我没有遇到任何问题的开始标签是当我试图找到我有问题的结束标签时。
private Pattern pattern;
private Matcher matcher;
private Pattern endPattern;
private Matcher endMatcher;
private static final String HTML_TAG_PATTERN = "<([a-zA-Z]+)>";
public boolean hasCorrectHTML(String checking)
{
boolean ret=true;
pattern=Pattern.compile(HTML_TAG_PATTERN);
matcher=pattern.matcher(checking);
while(matcher.find() && ret)
{
String htmlEndTag="</"+matcher.group(1)+">";
endPattern=Pattern.compile(htmlEndTag);
endMatcher=endPattern.matcher(checking.substring(matcher.end()));
ret=endMatcher.matches();
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我找到了某个东西的第一个标签,然后我继续找到了结束标签。我知道此设置将来会出现一些问题,这是一项正在进行中的工作。但是,对结束标记的检查不起作用。据我所知,我的逻辑是合理的。我正在使用任何标签并通过 . 然后我将它放入第二个模式,然后使用第二个匹配器检查匹配。我的文本字符串是“ <b>this test</b>”。它检测<b>得很好但是当我检查</b>它的匹配时总是返回false。我已经问过同龄人为什么会发生这种情况,但他们也不知所措。我不知道为什么会发生这种情况,有什么想法吗?我在这里缺少什么?
我正在尝试创建一个方法,将文件复制到我的项目本地的文件夹.我很困惑,因为根据我的理解,这应该有效.我决定创建一个简单的文本文件来测试我的复制文件方法,但它似乎没有工作.
std::string newFile="Files\\newText.txt";
std::ifstream oldFile("C:\\Users\\dtruman\\Documents\\oldText.txt", std::ios::binary | std::ios::in);
std::ofstream newTarget(newFile, std::ios::binary | std::ios::out);
char c;
while(oldFile.get(c));
{
std::cout << c << std::endl;
newTarget.put(c);
}
newTarget.close();
oldFile.close();
Run Code Online (Sandbox Code Playgroud)
其中一些东西是我摆弄代码.我的问题是,无论我似乎做什么,似乎永远不会正确复制文件,新文本文件的内容总是与原始文件不同.我错过了一些东西,据我所知,这段代码应该可行.