문자열의 마지막 문자는 어떻게 얻습니까?


181

문자열의 마지막 문자는 어떻게 얻습니까?

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

2
여러 질문이 섞여 있습니다. 일반적 str.charAt(str.length() - 1)으로 문자열의 마지막 문자는 대체로 그렇습니다 . 그러나 str이 비어 있거나 어떤 경우에 발생하는지 고려하십시오.
Vance Maverick

잘 작동합니다. 그러나 palidrome check의 논리가 정확하지 않은 것이므로 오류가 무엇인지 언급하십시오.
Zimbabao

답변:


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 5

8
줄이 비어 있으면 어떻게합니까?
Danish Khan

4
이 경우 예외가 발생합니다. 원하지 않습니까?
jcomeau_ictx

질문은 문자를 요구합니다-이것은 한 문자 길이의 문자열을 반환합니다. 사용 charAt()하지 않아야 함substring()
Andrew

1
Andrew, 편집하기 전에 원래 질문을 다시 살펴보면 OP가 이미 charAt ()을 시도했지만 원하는 것이 아니라는 것을 알 수 있습니다. 그것은 SO와 같은 위키와 같은 매체의 문제 중 하나입니다. 질문은 움직이는 목표이며 때로는 결과가 어리석은 것처럼 보일 수 있습니다.
jcomeau_ictx

96

다음을 사용하는 방법이 있습니다 String.charAt().

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

결과 출력은 last char = a입니다.


1
char 값이 리터럴 숫자와 상당히 다르고 수학 결과가 작동하지 않기 때문에 문자열 내의 숫자를 계산하려면 정말주의하십시오.
JesseBoyd

32

다른 답변에는 불필요한 텍스트와 코드가 많이 있습니다. 다음은 문자열의 마지막 문자를 얻는 두 가지 방법입니다.

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

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

32

다른 답변은 매우 완전하므로 문자열의 마지막 문자를 찾으려면 반드시 사용해야합니다. 그러나 조건부 (예 : 마지막 문자 'g')를 사용하려는 경우 다음을 수행 할 수도 있습니다.

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);
}

문자형 배열 사용하기 (빈 문자열 또는 null 문자열 인수를 조심하십시오!)

다른 솔루션은 StringBuilder를 사용합니다 (String 자체는 불변이므로 일반적으로 String 조작을 수행하는 데 사용됩니다).

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
이 답변은 정확하고 유용 할 수 있지만, 문제를 해결하는 데 도움이되는 방법을 설명하기 위해 설명과 함께 포함 하는 것이 좋습니다 . 이것은 작동을 멈추게하는 변경 (아마도 관련이없는)이 있고 사용자가 한 번 작동 한 방식을 이해해야하는 경우 특히 유용합니다. 감사!
Hatchet


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

출력은 다음과 같아야합니다.

t

행복한 코딩!


1
이것은 여기에 주어진 것과 동일한 예입니다. stackoverflow.com/a/13025371/773479
John Veldboom

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;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.