我试图简单地使用带有分隔符等于""的scanner .next()读取文本文件中的单词,但扫描程序包含带有令牌的换行符/回车符.
我已经搜索了互联网,试图找到这个问题的一个很好的例子,但没有找到它所以我在这里发布它.我在SO上发现了另一个类似的问题.我也看了关于扫描仪和模式(文档超过http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html),但我仍然无法找到一个方法来解决这个.
文本文件:
这是一个测试
看看if1这个,是否有效
好!
码:
int i = 0;
String string;
try(Scanner scanner = new Scanner(new File(filename))) {
scanner.useDelimiter(" ");
while(scanner.hasNext())
{
string = scanner.next();
System.out.println(i++ + ": " + string);
}
}catch(IOException io_error) {
System.out.println(io_error);
}
Run Code Online (Sandbox Code Playgroud)
输出:
0:这个
1:是
2:a
3:测试
至
4:看
5:if1
6:这个,
7:是
8:工作
好!
如您所见,#3和#8有两个单词换行.(我知道我可以将它们分成两个单独的字符串.)
如何设置接口侦听器以检测Kotlin中的变量更改。我成功用Java实现了以下内容,但是在Kotlin中遇到了问题:
接口:
public interface InterfaceRefreshList
{
public void refreshListRequest();
}
Run Code Online (Sandbox Code Playgroud)
包含侦听器的类:
public class SignalChange
{
private static boolean refreshListSwitch;
private static List<InterfaceRefreshList> refreshListListeners = new ArrayList<>();
public static void setRefreshList(boolean value)
{
refreshListSwitch = value;
for(InterfaceRefreshList l : refreshListListeners)
l.refreshListRequest();
}
public static void addRefreshListListener(InterfaceRefreshList l)
{
refreshListListeners.add(l);
}
}
Run Code Online (Sandbox Code Playgroud)
侦听器正在侦听的类:
public class FragmentBrowse extends Fragment
{
public FragmentBrowse() /// Constructor
{
SignalChange.addRefreshListListener(() -> refreshList());
}
refreshList()
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
发出变更信号:
SignalChange.setRefreshList(true);
Run Code Online (Sandbox Code Playgroud)
我可以设置接口和信号类:
class SignalChange
{
private …Run Code Online (Sandbox Code Playgroud)