2012-06-05 3 views
23

Я хочу заменить первое вхождение строки следующим образом.Как заменить первое вхождение строки в Java

String test = "see Comments, this is for some test, help us" 

** Если тест содержит вход следующим образом она не должна заменять

  1. См Комментарии, (с пространством в конце)
  2. См комментарии,
  3. См Комментарии **

Я хочу получить выход следующим образом:

Output: this is for some test, help us 

Спасибо заранее,

+8

[Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – user1329572

+1

Вы можете поймать поиск непосредственно на ваш вопрос или немного сдвинуть глаза бит справа от этого комментария и проверить связанные с ним вопросы ... – hovanessyan

+1

Или вы можете посмотреть документацию ['String'] (http://docs.oracle.com/javase/6/docs/api/java/ lang/String.html) и найдите 'replaceFirst()' ... – brimborium

ответ

59

Вы можете использовать replaceFirst(String regex, String replacement) метода String.

+0

Это для REGEXes not, Strings. –

+0

@ Sridhar-Sarnobat это понимается по параметрам, которые я упомянул в ответе, который я предполагаю? И именно так оно и должно использоваться. , – Asif

+0

Да. К сожалению, большинство читателей, которые воспользовались поддержкой, искали ответ, который вы дали rathar, чем то, что спросил OP (и то, что я искал). –

14

Использование substring(int beginIndex):

String test = "see Comments, this is for some test, help us"; 
String newString = test.substring(test.indexOf(",") + 2); 
System.out.println(newString); 

ВЫВОД:

это какое-то испытание, поможет нам

+1

Подождите, что если строка, которую вы хотите заменить, не находится в начале строки ввода? –

-1

Используйте String replaceFirst поменять первый экземпляр разделителя к чему-то уникальному:

String input = "this=that=theother" 
String[] arr = input.replaceFirst("=", "==").split('==',-1); 
String key = arr[0]; 
String value = arr[1]; 
System.out.println(key + " = " + value); 
7

Вы должны использовать уже проверенные и хорошо документированные библиотеки в пользу написания собственного кода.

org.apache.commons.lang3. 
    StringUtils.replaceOnce("coast-to-coast", "coast", "") = "-to-coast" 

Javadoc

Там даже версия, нечувствительна к регистру (что хорошо).

Maven

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.7</version> 
</dependency> 

Кредиты

Мой ответ на это увеличение: How to replace string only once without regex in Java?

3

Вы можете использовать следующую инструкцию, чтобы заменить первое вхождение строки.

String result = input.replaceFirst(Pattern.quote(stringToReplace), stringToReplaceWith); 

Это link имеет полную программу, включающие тесты.

1

Вы можете использовать следующий метод.

public static String replaceFirstOccurrenceOfString(String inputString, String stringToReplace, 
     String stringToReplaceWith) { 

    int length = stringToReplace.length(); 
    int inputLength = inputString.length(); 

    int startingIndexofTheStringToReplace = inputString.indexOf(stringToReplace); 

    String finalString = inputString.substring(0, startingIndexofTheStringToReplace) + stringToReplaceWith 
      + inputString.substring(startingIndexofTheStringToReplace + length, inputLength); 

    return finalString; 

} 

Ниже приводятся примеры link для замены первого вхождения строки с использованием и без регулярных выражений.

Смежные вопросы