拆分文本并从文本文件中随机选择
我有一个文本文件,其中每个文本段由###
分隔
文本文件:
Text 1 ### Text 2 ### Text 3 ### Text 4
目前,下面的代码读取整个文本文件,但我想选择一个随机文本,由于###
,所提到的文本与其他文本分开。 如何实施?
private void setContent(){ String text = ""; try { // file to inputstream InputStream input = getAssets().open("files/jokes.txt"); int size = input.available(); byte[] buffer = new byte[size]; input.read(buffer); input.close(); // byte buffer into a string text = new String(buffer); } catch (Exception e) { System.out.println(e); } contentText.setText(text); }
您可以先将###
字符串拆分为分隔符:
String [] textParts = text.split("###");
然后你可以选择这样的随机部分:
Random rand = new Random(); int randomIndex = rand.nextInt(textParts.length()); String randomTextPart = textParts[randomIndex];
也许你正在寻找这个
//separate whole text into pieces using separator String[] allPieces = text.split("###"); //select random text piece from all text pieces String randomPiece = allPieces[new Random().nextInt(allPieces.length)];
将String更改为String数组,并将每行读取为数组的新元素。
然后,您可以使用Random生成0到数组长度之间的随机数。
使用该数字从您的读取行数组中获取随机文本!
我不推荐基于#
的格式,因为当实际文本中有#
时它会中断。 此外,还有很多文件格式可以帮助您(例如XML,JSON等)。
但是,要解决您的问题,您可以使用String.split()
方法。 它接收分隔符并在分隔符的所有出现时分割文本。 然后使用Math.random()
或Random
类的新实例从返回的Array中选择一个随机项。
编辑:看到OP已经改变了问题,您现在需要使用###
作为分隔符而不是之前的#
。
例:
private void setContent(){ String text = ""; try { // file to inputstream InputStream input = getAssets().open("files/jokes.txt"); int size = input.available(); byte[] buffer = new byte[size]; input.read(buffer); input.close(); // byte buffer into a string text = new String(buffer); String[] jokes = text.split("###"); String yourJoke = jokes[(int)(Math.random() * jokes.length)]; // Do something with your joke } catch (Exception e) { System.out.println(e); } contentText.setText(text); }