Ответ 1
вы можете разделить строку на разрыв строки, используя следующую инструкцию:
String textStr[] = yourString.split("\\r\\n|\\n|\\r");
Я создаю noob для разработки Android, и я пытаюсь разбить строку несколько раз на несколько разрывов строк. строка, которую я пытаюсь разбить, извлекается из запроса базы данных и создается следующим образом:
public String getCoin() {
// TODO Auto-generated method stub
String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_QUANTITY, KEY_OUNCES, KEY_VALUE };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result = "";
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iQuantity = c.getColumnIndex(KEY_QUANTITY);
int iOunces = c.getColumnIndex(KEY_OUNCES);
int iValue = c.getColumnIndex(KEY_VALUE);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result = result + /*c.getString(iRow) + " " +*/ c.getString(iName).substring(0, Math.min(18, c.getString(iName).length())) + "\n";
}
c.close();
return result;
result.getCoin читается следующим образом:
alphabravocharlie
Я хочу разбить строку на разрыв строки и поместить каждую подстроку в String Array. Это мой текущий код:
String[] separated = result.split("\n");
for (int i = 0; i < separated.length; i++) {
chartnames.add("$." + separated[i] + " some text" );
}
Это дает мне вывод:
"$.alpha
bravo
charlie some text"
вместо моего желаемого вывода:
"$.alpha some text, $.bravo some text, $.charlie some text"
Любая помощь приветствуется
вы можете разделить строку на разрыв строки, используя следующую инструкцию:
String textStr[] = yourString.split("\\r\\n|\\n|\\r");
Это немного перебор, но вы можете использовать стандартные классы ввода-вывода:
BufferedReader rdr = new BufferedReader(new StringReader(result));
List<String> lines = new ArrayList<String>();
for (String line = rdr.readLine(); line != null; line = rdr.readLine()) {
lines.add(line);
}
rdr.close();
// lines now contains all the strings between line breaks
Преимущество этого заключается в том, что BufferedReader.readLine()
имеет всю логику, разработанную для обнаружения всех видов терминаторов линий.
Использование вспомогательного класса Apache для класса StringUtils.
Независимый от платформы способ:
String[] lines = StringUtils.split(string, "\r\n");
Зависит от платформы. Возможно, некоторые процессоры работают быстрее. Но я не ожидал, что это будет иметь значение.
String[] lines = StringUtils.split(string, System.lineSeparator());
Если возможно, я бы предложил использовать классы с разделителями и кластерами Guava, предпочитая String.split. Но даже тогда важно убедиться, что вы правильно избегаете своих регулярных выражений при их объявлении. Я не уверен, что \n "не будет правильно интерпретироваться компилятором regex в Java, но я не уверен, что это будет.
Покрытие всех возможных окончаний строк сложно, поскольку несколько последовательных маркеров EOL могут испортить ваше соответствие. Я бы предложил
String [] separated = result.replaceAll("\\r", "").split("\\n");
Matcher m = Pattern.compile("(^.+$)+", Pattern.MULTILINE).matcher(fieldContents);
while (m.find()) {
System.out.println("whole group " + m.group())
}
Я предлагаю следующий фрагмент, который совместим с типами конечных элементов ПК и Mac.
String [] separated = result.replaceAll("\\r", "\\n")
.replaceAll("\\n{2,}", "\\n")
.split("\\n");