2015-02-17 2 views
0

Как удалить пробелы между символами, отличными от алфавитно-цифровых символов? Напримерудалять пробелы между символами не буквенно-цифровых символов

anti - C6/36 membrane antibodies 
D2 NS1 - P1 - specific antibodies 

К

anti-C6/36 membrane antibodies 
D2 NS1-P1-specific antibodies 
+0

Если мы также включаем точку '. 'как алфавит? Можно ли вводить такие данные, как 'Mr. Adams'? – Pshemo

ответ

1

Вы можете использовать эту lookaround на основе регулярных выражений для поиска:

(?<![\p{L}\p{N}]) +| +(?![\p{L}\p{N}]) 

И заменить его пустой строкой.

RegEx Demo

В Java:

String repl = input.replaceAll("(?<![\\p{L}\\p{N}]) +| +(?![\\p{L}\\p{N}])", ""); 

(?<![\p{L}\p{N}]) | (?![\p{L}\p{N}]) средства совпадают пространство, если оно не сопровождается буквенно-цифровой или если не предшествует в буквенно-цифровой.

0

Попробуйте регулярное выражение, как это:

public static void main(String[] args) { 
    String s1 = "anti - C6/36 membrane antibodies"; 
    String s2 = "D2 NS1 - P1 - specific antibodies"; 
    String pattern = "\\s+(?=[^a-zA-Z0-9]+)|(?<=[^a-zA-Z0-9])\\s+";// replace all spaces either preceeded by or followed by a non-alphanumeric character 
    System.out.println(s1.replaceAll(pattern, "")); 
    System.out.println(s2.replaceAll(pattern, "")); 
} 

O/P:

anti-C6/36 membrane antibodies 
D2 NS1-P1-specific antibodies