2009-06-05 11 views

उत्तर

1

String.replaceAll() या replaceFirst()

String s = "abcde".replaceAll("ab", "ba") 

Javadocs String API

+0

में पहले दो वर्णों को स्वैप करेगा, यह माना जाता है कि आप समय से पहले वर्णित वर्णों को जानेंगे, जो ज्यादातर मामलों में उपयोग करने योग्य समाधान की तरह प्रतीत नहीं होते हैं। –

23

एक स्ट्रिंग 'में' के लिए लिंक, आप नहीं कर सकते। स्ट्रिंग्स अपरिवर्तनीय हैं।

+23

मुझे आपकी नियमित अभिव्यक्ति की तलाश पसंद है। – JeeBee

+2

lol, मुझे यह जवाब पसंद है। – didxga

42

String के बाद से वस्तुओं, अपरिवर्तनीय हैं toCharArray के माध्यम से एक char[] के लिए जा रहा, वर्ण की अदला-बदली, तो String(char[]) निर्माता काम करेंगे के माध्यम से char[] से एक नया String बनाने: आप आसानी से के साथ एक दूसरे स्ट्रिंग बना सकते हैं।

निम्न उदाहरण स्वैप पहले और दूसरे वर्ण:

String originalString = "abcde"; 

char[] c = originalString.toCharArray(); 

// Replace with a "swap" function, if desired: 
char temp = c[0]; 
c[0] = c[1]; 
c[1] = temp; 

String swappedString = new String(c); 

System.out.println(originalString); 
System.out.println(swappedString); 

परिणाम:

abcde 
bacde 
+2

अच्छा।निश्चित नहीं है कि मैं एक चार सरणी के बारे में सोचने के बजाय सीधे स्ट्रिंगबिल्डर क्यों गया। –

+0

@ जोन स्कीट: मेरा पहला विचार वास्तव में एक नया स्ट्रिंग बनाने के लिए था, लेकिन चूंकि आवश्यकताएं एक स्वैप थीं, इसलिए मैंने सोचा कि चार सरणी आसान होगी। :) – coobird

+1

Arrays, इतनी पुरानी शैली !!! – jjnguy

2

String.toCharArray() आप इस स्ट्रिंग का प्रतिनिधित्व पात्रों में से एक सरणी दे देंगे।

आप मूल स्ट्रिंग को बदलने के बिना इसे बदल सकते हैं (आपको आवश्यक वर्णों को स्वैप करें), और फिर String(char[]) का उपयोग करके एक नई स्ट्रिंग बनाएं।

ध्यान दें कि तार अपरिवर्तनीय हैं, इसलिए आपको एक नई स्ट्रिंग ऑब्जेक्ट बनाना होगा।

6

यह कई बार उत्तर दिया गया है, लेकिन यहाँ सिर्फ मनोरंजन के लिए एक और है :-)

public class Tmp { 
    public static void main(String[] args) { 
     System.out.println(swapChars("abcde", 0, 1)); 
    } 
    private static String swapChars(String str, int lIdx, int rIdx) { 
     StringBuilder sb = new StringBuilder(str); 
     char l = sb.charAt(lIdx), r = sb.charAt(rIdx); 
     sb.setCharAt(lIdx, r); 
     sb.setCharAt(rIdx, l); 
     return sb.toString(); 
    } 
} 
0

यहाँ रिकर्सिवली जावा वर्ण की अदला-बदली .. आप http://java2novice.com/java-interview-programs/string-reverse-recursive/

पर पूर्ण नमूना कोड प्राप्त कर सकते हैं के लिए जावा नमूना कोड है
public String reverseString(String str){ 

    if(str.length() == 1){ 
     return str; 
    } else { 
     reverse += str.charAt(str.length()-1) 
       +reverseString(str.substring(0,str.length()-1)); 
     return reverse; 
    } 
} 
+3

स्ट्रिंग को रिवर्स करना एक ही चीज़ नहीं है जैसा कि दो अक्षर स्वैप कर रहा है ... –

0
import java.io.*; 
class swaping 
{ 
    public static void main(String args[]) 
    { 
     String name="premkumarg"; 
     int len=name.length(); 
     char[] c = name.toCharArray(); 
     for(int i=0;i<len-1;i=i+2) 
     { 
      char temp= c[i]; 
      c[i]=c[i+1]; 
      c[i+1]=temp; 
     } 

     System.out.println("Swapping string is: "); 
     System.out.println(c); 

    } 
} 
2
StringBuilder sb = new StringBuilder("abcde"); 
    sb.setCharAt(0, 'b'); 
    sb.setCharAt(1, 'a'); 
    String newString = sb.toString(); 
3
static String string_swap(String str, int x, int y) 
{ 

    if(x < 0 || x >= str.length() || y < 0 || y >= str.length()) 
    return "Invalid index"; 

    char arr[] = str.toCharArray(); 
    char tmp = arr[x]; 
    arr[x] = arr[y]; 
    arr[y] = tmp; 

    return new String(arr); 
} 
0

यहाँ एक StringBuilder के साथ एक समाधान है। यह एक पैडिंग चरित्र के साथ असमान स्ट्रिंग लंबाई के साथ तारों के परिणामस्वरूप पैडिंग का समर्थन करता है। जैसा कि आपने अनुमान लगाया है कि यह विधि हेक्साडेसिमल-निबल-स्वैपिंग के लिए बनाई गई है।

/** 
* Swaps every character at position i with the character at position i + 1 in the given 
* string. 
*/ 
public static String swapCharacters(final String value, final boolean padding) 
{ 
    if (value == null) 
    { 
     return null; 
    } 

    final StringBuilder stringBuilder = new StringBuilder(); 
    int posA = 0; 
    int posB = 1; 
    final char padChar = 'F'; 

    // swap characters 
    while (posA < value.length() && posB < value.length()) 
    { 
     stringBuilder.append(value.charAt(posB)).append(value.charAt(posA)); 
     posA += 2; 
     posB += 2; 
    } 

    // if resulting string is still smaller than original string we missed the last 
    // character 
    if (stringBuilder.length() < value.length()) 
    { 
     stringBuilder.append(value.charAt(posA)); 
    } 

    // add the padding character for uneven strings 
    if (padding && value.length() % 2 != 0) 
    { 
     stringBuilder.append(padChar); 
    } 

    return stringBuilder.toString(); 
} 
0
public static String shuffle(String s) { 
    List<String> letters = Arrays.asList(s.split("")); 
    Collections.shuffle(letters); 
    StringBuilder t = new StringBuilder(s.length()); 
    for (String k : letters) { 
     t.append(k); 
    } 
    return t.toString(); 
} 
0

मुझे लगता है कि यह मदद करनी चाहिए।

import java.util.*; 

public class StringSwap{ 

public static void main(String ar[]){ 
    Scanner in = new Scanner(System.in); 
    String s = in.next(); 
    System.out.println(new StringBuffer(s.substring(0,2)).reverse().toString().concat(s.substring(2))); 
    } 
} 
-2

वापसी str.charAt (1) + str.charAt (0) str.substring + (2); // स्ट्रिंग

+0

कृपया कोड की एक पंक्ति न केवल कुछ स्पष्टीकरण जोड़ें? –

+0

यह एक पूरी तरह से गलत परिणाम पैदा करता है। संकेत: समान प्राथमिकता के कम्प्यूटेशनल ऑपरेटरों को जावा में सहयोगी छोड़ दिया गया है, जैसा कि लगभग सभी प्रोग्रामिंग भाषाओं में है। –

+0

// आप यह कर सकते हैं ... संकेत: उस कोड का काम स्ट्रिंग की लंबाई 2 से बड़ा है >>>>>>>> >>>>>>>>>>>>>>> पैकेज को.pkgtry; आयात java.util.Scanner; सार्वजनिक वर्ग ToTry { सार्वजनिक स्थैतिक स्ट्रिंग स्वैप (स्ट्रिंग str) { स्ट्रिंग सेवानिवृत्त = "" + str.charAt (1) + str.charAt (0) (2) str.substring +; रिटर्न रिट; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) { स्ट्रिंग एस = स्वैप ("abcg"); System.out.println (ओं); } } –

संबंधित मुद्दे