powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Замена пробелов на   в начале строк
14 сообщений из 14, страница 1 из 1
Замена пробелов на   в начале строк
    #35829888
rpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rpp
Гость
Я начинающий, поэтому не могу понять как.

Задача: заменить все пробелы в начале строк HTML-кода на  
(чтобы потом перенести код в CMS, где он будет красиво показан с традиционным jQuery-оформлением)
Эти пробелы в начале строк сохранят красивый показ отступов.


Но Pattern.compile("^\\s"); находит только 1-й пробел.

Pattern.compile("^\\s{1,}"); находит все, но .replaceAll их все заменяет на 1 пробел.

Обходные пути новичка:

1) заменить вообще пробелы
2) Сделать замену сперва 10 пробелов на 10, затем 9 на 9 итд.
А потом вдруг появятся 11 пробелов и алгоритм не будет работать. И длинновато. И по-нуубски.

По идее, решение должно быть простым, традиционными средствами. Поискал в Инете, потыкался с regex, такое впечатление, что невозможно.

Чего-то я не замечаю в Regex.

Как сделать замену:

любое число пробелов в начале строки

на

то же самое число  

Спасибо!
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35829897
rpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rpp
Гость
Замена пробелов на & nbsp; в начале строк

Съело & nbsp; и не вижу кнопки редактирования, поэтому повтор

Я начинающий, поэтому не могу понять как.

Задача: заменить все пробелы в начале строк HTML-кода на & nbsp;  
(чтобы потом перенести код в CMS, где он будет красиво показан с традиционным jQuery-оформлением)
Эти пробелы в начале строк сохранят красивый показ отступов.


Но Pattern.compile("^\\s"); находит только 1-й пробел.

Pattern.compile("^\\s{1,}"); находит все, но .replaceAll их все заменяет на 1 пробел.

Обходные пути новичка:

1) заменить вообще пробелы
2) Сделать замену сперва 10 пробелов на 10, затем 9 на 9 итд.
А потом вдруг появятся 11 пробелов и алгоритм не будет работать. И длинновато. И по-нуубски.

По идее, решение должно быть простым, традиционными средствами. Поискал в Инете, потыкался с regex, такое впечатление, что невозможно.

Чего-то я не замечаю в Regex.

Как сделать замену:

любое число пробелов в начале строки

на

то же самое число  & nbsp;

Спасибо!
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830018
rpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rpp
Гость
Кажется нашел в документации решение.

Должно быть что-то типа

Pattern.compile("\\s(?![a-zA-Z0-9])")
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830187
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	
 public   static   void  main(String[] args) {
		String s = "    lalala";
		StringBuffer result =  new  StringBuffer();
		 for  ( int  i =  0 ; i < s.length(); i++) {
			 char  ch = s.charAt(i);
			
			 if  (Character.isWhitespace(ch)) {
				result.append(" ");
			}  else  {
				result.append(ch);
			}
			
		}
		
		System.out.println(result);
	}

Код: plaintext
    lalala
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830189
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	
 public   static   void  main(String[] args) {
		String s = "    lalala";
		StringBuffer result =  new  StringBuffer();
		 for  ( int  i =  0 ; i < s.length(); i++) {
			 char  ch = s.charAt(i);
			
			 if  (Character.isWhitespace(ch)) {
				result.append("_");
			}  else  {
				result.append(ch);
			}
			
		}
		
		System.out.println(result);
	}

Код: plaintext
___lalala
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830390
rpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rpp
Гость
1) Это не работает.

Например:

авторString s = " <title>No title</title>";

Результат:

автор____<title>No_title</title>


2) Кроме того, этот код сломается на следующей строке:

<meta name="generator" content="Namo WebEditor">

Из-за кавычек.


P.S. И у меня многострочный текст в JTextArea.
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830402
rpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rpp
Гость
То есть предложенный алгоритм заменяет ВСЕ пробелы.

А мне нужно заменить ВСЕ ПРОБЕЛЫ В НАЧАЛЕ КАЖДОЙ СТРОКИ ДО ПЕРВОГО СИМВОЛА.


Pattern.compile(" \\s(?![a-zA-Z0-9]) ") почти делает, что надо. Но только 1 пробел перед первым символом не меняет.
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830586
gallezze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpp,

как-то так,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public   static   void  main(String[] args) {
	 final  String string = "   blablabla blabla bla ";
	 final  Matcher matcher = Pattern.compile("^(\\s)+").matcher(string);
	 final  StringBuffer appender =  new  StringBuffer(string.length());
	 final  StringBuilder replacement =  new  StringBuilder();
	 while  (matcher.find()) {
		 for  ( int  i = matcher.group().length()- 1 ; i >=  0 ; i--) {
			replacement.append("1");
		}
		matcher.appendReplacement(appender, replacement.toString());
		replacement.setLength( 0 );
	}
	System.out.println("'" + matcher.appendTail(appender) + "'");
}
но не берусь утверждать, что решение кошерное, думаю есть и получше
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830730
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	 public   static   void  main(String[] args) {
		String s = "   <meta name=\"generator\" content=\"Namo WebEditor\">";
		StringBuffer result =  new  StringBuffer();
		 int  i =  0 ;
		 while  (Character.isWhitespace(s.charAt(i))) {
				result.append("_");
				i++;
		}
		 for  (; i< s.length(); i++) {
			result.append(s.charAt(i));
		}
		System.out.println(result);
	}
Результат:
Код: plaintext
___<meta name="generator" content="Namo WebEditor">
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35830731
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rppпочти делает
Почти, как известно, не считается.
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35831182
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если юзер в JEditorPane редактирует HTML, то пусть пишет правильный HTML
с &nbsp;. А если ему лень, пусть складывает свой HTML в <pre> тэг.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35833966
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
<любая строка>.replaceAll("^\\s+", "")
кстати, удалит не только пробелы, но и табуляцию
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35834027
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, тебе ж не это, а вот это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	 public   static  String space2nbsp(String arg) {
	Pattern p = Pattern.compile("^(\\s+)(.*)");
	Matcher m = p.matcher(arg);
	 if  (m.find()) {
		StringBuilder result =  new  StringBuilder();
		 for  ( int  i =  0 , len = m.group( 1 ).length(); i < len; i ++)
			result.append(" ");
		result.append(m.group( 2 ));
		 return  result.toString();
	}
	 return  arg;
}
...
Рейтинг: 0 / 0
Замена пробелов на   в начале строк
    #35834032
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleksandyБлин, тебе ж не это, а вот это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	 public   static  String space2nbsp(String arg) {
	Pattern p = Pattern.compile("^(\\s+)(.*)");
	Matcher m = p.matcher(arg);
	 if  (m.find()) {
		StringBuilder result =  new  StringBuilder();
		 for  ( int  i =  0 , len = m.group( 1 ).length(); i < len; i ++)
			result.append("& nbsp;");
		result.append(m.group( 2 ));
		 return  result.toString();
	}
	 return  arg;
}
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Замена пробелов на   в начале строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]