Как удалить все пробелы, которые находятся за пределами "" на строке? Например:Удаление пробелов за пределами "" из строки
0507 ? "Y e a" : "No"
Если вернуться:
0507?"Y e a":"No"
Спасибо.
Как удалить все пробелы, которые находятся за пределами "" на строке? Например:Удаление пробелов за пределами "" из строки
0507 ? "Y e a" : "No"
Если вернуться:
0507?"Y e a":"No"
Спасибо.
попробовать
String s = "0507 ? \"Y e a\" : \"No\"".replaceAll(" +([?:]) +", "$1");
System.out.println(s);
печатает
0507?"Y e a":"No"
Спасибо, Евгений! – BloodShura
-вы можно разделить на "с помощью st.split функции()
-Тогда применять st.replaceAll (" \ S», "") только на четных индексов массива
-Тогда concate все элементы массива, используя различные Utilites как Apache Commons Lang StringUtils.join (
например:
Оригинал Струнные - 0507 "Y еа": "Нет"
После раскола с "..... {0507? , Y e a,:, No}
Применить st.replaceAll ("\ s", "") к равномерным индексам массива .... {0507? , Y еа:, No}
Concate использованием StringUtils.join (с, "\" ") ...... 0507 "Y еа":" Нет»
Пример кода:
String input="0507 ? \"Y e a\" : \"No\"";
String[] inputParts = input.split("\"");
int i = 0;
while(i< inputParts.length)
{
inputParts[i]=inputParts[i].replaceAll("\\s", "");
i+=2;
}
String output = StringUtils.join(inputParts, "\"");
Спасибо, Амит! : D – BloodShura
или попробовать StringTok enizer: Чтение. tokenizer использует набор разделителей по умолчанию, который представляет собой «\ t \ n \ r \ f»: символ пробела, символ табуляции, символ новой строки, символ возврата каретки и символ формы.
StringTokenizer tok=new StringTokenizer(yourString);
String temp="";
while(tok.hasMoreElements()){
temp=temp+tok.nextElement();
}
System.out.println("temp"+temp);
попробуйте все, что наиболее эффективно (алгоритм мудрый) – user1428716
Erm ... но я думаю, что это преобразит 100? «y e a»: «n o» in: 100? «yea»: «no», и мне нужно удалить пробелы только за пределами кавычек («) e.e. Но, в любом случае, спасибо! – BloodShura
Этот код
static Pattern groups = Pattern.compile("([^\\\"])+|(\\\"[^\\\"]*\\\")");
public static void main(String[] args) {
String test1="0507 ? \"Y e a\" : \"No\"";
System.out.println(replaceOutsideSpace(test1));
String test2="0507 ?cc \"Y e a\" :bb \"No\"";
System.out.println(replaceOutsideSpace(test2));
String test3="text text text text \"Y e a\" :bb \"No\" \"\"";
System.out.println(replaceOutsideSpace(test3));
String test4="text text text text \"Y e a\" :bb \"No\" \"\" gaga gag ga end";
System.out.println(replaceOutsideSpace(test4));
}
public static String replaceOutsideSpace(String text){
Matcher m = groupsMatcher(text);
StringBuffer sb = new StringBuffer(text.length());
while(m.find()){
String g0=m.group(0);
if(g0.indexOf('"')==-1){g0=g0.replaceAll(" ", "");}
sb.append(g0);
}
return sb.toString();
}
private synchronized static Matcher groupsMatcher(String text)
{return groups.matcher(text);}
печатает
0507?"Y e a":"No"
0507?cc"Y e a":bb"No"
texttexttexttext"Y e a":bb"No"""
texttexttexttext"Y e a":bb"No"""gagagaggaend
Пожалуйста, прочитайте: http://stackoverflow.com/questions/5455794/removing-whitespace-from-strings-in-java – user1428716
Привет, ну, я читал, но ... никаких результатов. Я знаю, как заменить все пробелы из String, но я не знаю, как заменить только пробелы, которые находятся вне кавычек. – BloodShura