2013-07-27 2 views
0

Класс UpperCaseConverter преобразует входной текст в верхний регистр текста, исключая слова согласованный с Regex "(? Я)^((?! SHT).) *".Java RegEx строка за исключением определенного слова

То, что я ожидал получить это 1A0A-50-CRD-140-20002-063484C-N-01_Sht_1A.pdf но результат 1A0A-50-CRD-140-20002-063484C-N-01_Sht_1a .pdf.

Как мог последняя часть письма в верхнем регистре для .pdf

кроме UpperCaseConverter

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class UpperCaseConverter { 

    private UpperCaseConverter(){}; 

    public static String convert(String text, String regEx) { 
     StringBuilder toBeConverted = new StringBuilder(text); 

     Pattern pattern = Pattern.compile(regEx); 
     Matcher matcher = pattern.matcher(toBeConverted); 

     while(matcher.find()) { 
      String buf = toBeConverted.substring(matcher.start(), matcher.end()).toUpperCase(); 
      toBeConverted.replace(matcher.start(), matcher.end(), buf); 
     } 

     return toBeConverted.toString(); 
    } 
} 

* TestCase

import static org.junit.Assert.*; 

import org.junit.Before; 
import org.junit.Test; 

public class UpperCaseConverterTest { 

    @Test 
    public void testUpperCase() { 
     String expect = UpperCaseConverter.convert("1a0A-50-CRD-140-20002-063484C-N-01_Sht_1a.pdf", 
       "(?i)^((?!sht).)*"); 
     assertEquals("1A0A-50-CRD-140-20002-063484C-N-01_Sht_1A.pdf", expect); 
    } 
} 
+0

Что такое 'UpperCaseConverter'? – arshajii

+0

Не указывая нам никакого кода, вам нечего делать, но угадать. Вы пытались снова отключить его? –

+0

это класс, который я сделал для преобразования текста в нижнем регистре в верхний регистр, исключая слово, соответствующее предоставленному RegEx. –

ответ

0

Ваше регулярное выражение останавливается перед самым последним появлением «sht» в соответствии с вашей инструкцией. Только часть с регулярным выражением получает обработку в верхнем регистре.

+0

Может ли это быть решено путем изменения RegEx? –

+0

Я очень новичок в RegEx. Спасибо тебе, друг. –

+0

Вам нужно будет уточнить * цель * этого регулярного выражения. Как бы то ни было, он работает точно в соответствии с вашими собственными спецификациями «конвертирует входной текст в заглавный текст, исключая совпадающее слово». – usr2564301