मुझे एक स्ट्रिंग का अंतिम चरित्र कैसे मिलेगा?


181

मुझे एक स्ट्रिंग का अंतिम चरित्र कैसे मिलेगा?

public class Main
{
    public static void main(String[] args) 
    {
        String s = "test string";
        //char lastChar = ???
    }   
}

2
आपको कई प्रश्न एक साथ मिल गए हैं। मोटे तौर पर, हाँ, str.charAt(str.length() - 1)आमतौर पर स्ट्रिंग में अंतिम वर्ण होता है; लेकिन विचार करें कि क्या होता है अगर str खाली है, या अशक्त है।
वन्स मैवरिक

इसका काम ठीक है। लेकिन पैलीड्रोम जांच का तर्क सही नहीं है, कृपया यह भी उल्लेख करें कि आपको क्या त्रुटि हो रही है।
जिम्बाब्वे मारी

जवाबों:


243

कोड:

public class Test {
    public static void main(String args[]) {
        String string = args[0];
        System.out.println("last character: " +
                           string.substring(string.length() - 1)); 
    }
}

के उत्पादन java Test abcdef:

last character: f

2
इसे एक स्ट्रिंग के रूप में लौटाता है, एक चरित्र के रूप में नहीं, लेकिन आप पहले से ही जानते हैं कि उत्तरार्द्ध को कैसे करना है, और मैं स्पष्ट नहीं हूं कि आप क्या कर रहे हैं।
jcomeau_ictx

8
यदि आपका तार खाली है तो क्या होगा?
दानिश खान

4
यह उस मामले में एक अपवाद बढ़ाएगा। क्या आप इसे नहीं चाहेंगे?
jcomeau_ictx

एक चरित्र के लिए प्रश्न पूछता है - यह एक वर्ण लंबी स्ट्रिंग देता है। का उपयोग charAt()नहीं करना चाहिएsubstring()
एंड्रयू

1
एंड्रयू, अगर आप इसे संपादित करने से पहले मूल प्रश्न पर वापस देखते हैं, तो आप देखेंगे कि ओपी पहले से ही charAt () की कोशिश कर रहा था और यह वही नहीं था जो वह चाहता था। यह विकी जैसे माध्यम जैसे एसओ की समस्याओं में से एक है, प्रश्न एक चलते लक्ष्य हैं और कभी-कभी उत्तर इसके परिणामस्वरूप मूर्खतापूर्ण दिख सकते हैं।
jcomeau_ictx

96

यहाँ एक विधि है String.charAt():

String str = "India";
System.out.println("last char = " + str.charAt(str.length() - 1));

परिणामी आउटपुट है last char = a


1
वास्तव में सावधान रहें यदि आप एक स्ट्रिंग के भीतर एक संख्या पर गणना करना चाहते हैं क्योंकि चार मान शाब्दिक संख्या की तुलना में काफी भिन्न हैं और आपके गणित के परिणाम काम नहीं करेंगे।
JesseBoyd

32

अन्य उत्तरों में बहुत सारे अनावश्यक पाठ और कोड हैं। स्ट्रिंग के अंतिम चरित्र को प्राप्त करने के दो तरीके यहां दिए गए हैं:

चार

char lastChar = myString.charAt(myString.length() - 1);

तार

String lastChar = myString.substring(myString.length() - 1);

32

अन्य उत्तर बहुत पूरे हैं, और यदि आप एक स्ट्रिंग के अंतिम चरित्र को खोजने की कोशिश कर रहे हैं, तो आपको निश्चित रूप से उनका उपयोग करना चाहिए। लेकिन अगर आप केवल एक सशर्त (जैसे कि अंतिम वर्ण 'जी') का उपयोग करने की कोशिश कर रहे हैं, तो आप निम्न कार्य भी कर सकते हैं:

if (str.endsWith("g")) {

या, तार

if (str.endsWith("bar")) {

बहुत उपयोगी और बात है।
Aquarelle

4

इसे इस्तेमाल करे:

if (s.charAt(0) == s.charAt(s.length() - 1))

यह उत्तर गलत है। यह केवल यह देखने के लिए जांचता है कि क्या पहले और आखिरी चार्ट समान हैं।
Aquarelle

2

सरल उपाय है:

public String frontBack(String str) {
  if (str == null || str.length() == 0) {
    return str;
  }
  char[] cs = str.toCharArray();
  char first = cs[0];
  cs[0] = cs[cs.length -1];
  cs[cs.length -1] = first;
  return new String(cs);
}

एक चरित्र सरणी का उपयोग करना (बुरा खाली स्ट्रिंग या अशक्त स्ट्रिंग तर्क के लिए बाहर देखो!)

एक अन्य समाधान StringBuilder का उपयोग करता है (जिसका उपयोग आमतौर पर स्ट्रिंग हेरफेर करने के लिए किया जाता है क्योंकि स्ट्रिंग स्वयं अपरिवर्तनीय है।

public String frontBack(String str) {
  if (str == null || str.length() == 0) {
    return str;
  }
  StringBuilder sb = new StringBuilder(str);  
  char first = sb.charAt(0);
  sb.setCharAt(0, sb.charAt(sb.length()-1));
  sb.setCharAt(sb.length()-1, first);
  return sb.toString();
}

अभी तक एक और दृष्टिकोण (वास्तविक उपयोग से अधिक अनुदेश के लिए) यह एक है:

public String frontBack(String str) {
  if (str == null || str.length() < 2) {
    return str;
  }
  StringBuilder sb = new StringBuilder(str);
  String sub = sb.substring(1, sb.length() -1);
  return sb.reverse().replace(1, sb.length() -1, sub).toString();
}

यहां पूरा स्ट्रिंग उलटा है और फिर जो हिस्सा उल्टा नहीं होना चाहिए उसे प्रतिस्थापन के साथ बदल दिया जाता है। ;)


2
public String lastChars(String a) {
if(a.length()>=1{
String str1 =a.substring(b.length()-1);
}
return str1;
}

मुझे नहीं लगता कि यह कोड संकलित करेगा (केवल छोटे सुधार की आवश्यकता है), एक बार जब आप इसे संकलित करते हैं तो यह देखने के लिए कि यह काम करता है एक खाली स्ट्रिंग पर एक परीक्षण दें।
Knells

2
हालांकि यह उत्तर संभवतः सही और उपयोगी है, यह पसंद किया जाता है यदि आप इसे समझाने के साथ कुछ स्पष्टीकरण भी शामिल करते हैं कि यह समस्या को हल करने में कैसे मदद करता है। यह भविष्य में विशेष रूप से उपयोगी हो जाता है, अगर कोई परिवर्तन (संभवतः असंबंधित) होता है जो इसे काम करना बंद कर देता है और उपयोगकर्ताओं को यह समझने की आवश्यकता है कि एक बार कैसे काम किया। धन्यवाद!
हैचेट


2
String aString = "This will return the letter t";
System.out.println(aString.charAt(aString.length() - 1));

आउटपुट होना चाहिए:

t

हैप्पी कोडिंग!


1
यह वही उदाहरण है जो यहां दिया गया है stackoverflow.com/a/13025371/773479
जॉन वेल्डबूम

2

एक स्ट्रिंग का अंतिम xx प्राप्त करने के लिए मैं एक विधि का उपयोग कर रहा हूं:

public static String takeLast(String value, int count) {
    if (value == null || value.trim().length() == 0) return "";
    if (count < 1) return "";

    if (value.length() > count) {
        return value.substring(value.length() - count);
    } else {
        return value;
    }
}

फिर इसे इस तरह उपयोग करें:

String testStr = "this is a test string";
String last1 = takeLast(testStr, 1); //Output: g
String last4 = takeLast(testStr, 4); //Output: ring

1
 public char lastChar(String s) {
     if (s == "" || s == null)
        return ' ';
    char lc = s.charAt(s.length() - 1);
    return lc;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.