복붙노트

[SCALA] 어떻게 스칼라에서 java.String.format를 사용 하는가?

SCALA

어떻게 스칼라에서 java.String.format를 사용 하는가?

나는 문자열의 .format 방법을 사용하려합니다. 내가 문자열에 등 % 1, % 2, 배치한다면, java.util.UnknownFormatConversionException는 혼란 자바 소스 코드 부분을 가리키는 발생합니다 :

private void checkText(String s) {

    int idx;

    // If there are any '%' in the given string, we got a bad format
    // specifier.
    if ((idx = s.indexOf('%')) != -1) {
        char c = (idx > s.length() - 2 ? '%' : s.charAt(idx + 1));
        throw new UnknownFormatConversionException(String.valueOf(c));
    }
}

이에서 나는 %의 문자가 금지되어 있음을 이해합니다. 그렇다면, 내가 인자 자리를 위해 무엇을 사용해야합니까?

나는 스칼라 2.8 사용합니다.

해결법

  1. ==============================

    1.이전의 모든 응답이 올 동안, 그들은 자바의 모든이야. 다음은 스칼라의 예는 다음과 같습니다

    이전의 모든 응답이 올 동안, 그들은 자바의 모든이야. 다음은 스칼라의 예는 다음과 같습니다

    val placeholder = "Hello %s, isn't %s cool?"
    val formatted = placeholder.format("Ivan", "Scala")
    

    나는 또한 유용 할 수 있습니다 파이썬의 % 연산자와 같은 형식을 만드는 방법에 대한 블로그 게시물이 있습니다.

  2. ==============================

    2.당신은 위치를 나타내는 숫자를 사용할 필요가 없습니다. 기본적으로 인수의 위치는 단순히 문자열에 나타나는 순서입니다.

    당신은 위치를 나타내는 숫자를 사용할 필요가 없습니다. 기본적으로 인수의 위치는 단순히 문자열에 나타나는 순서입니다.

    다음은이를 사용하기에 적합한 방법의 예입니다 :

    String result = String.format("The format method is %s!", "great");
    // result now equals  "The format method is great!".
    

    당신은 항상 방법은 문자열을 표시하는 방법을 알려 다른 문자 뒤에 %를 사용합니다. % s은 (는) 아마도 가장 일반적이고, 그것은 단지 인수가 문자열로 처리되어야 함을 의미한다.

    나는 모든 옵션을 나열하지 않습니다,하지만 난 몇 가지 예에 불과 당신에게 아이디어를 제공하기 위해를 줄 것이다 :

    // we can specify the # of decimals we want to show for a floating point:
    String result = String.format("10 / 3 = %.2f", 10.0 / 3.0);
    // result now equals  "10 / 3 = 3.33"
    
    // we can add commas to long numbers:
    result = String.format("Today we processed %,d transactions.", 1000000);
    // result now equals  "Today we processed 1,000,000 transactions."
    

    옵션에 대한 자세한 설명은 당신이 포맷터의 javadoc를 볼 수 있도록 및 String.format는하는 java.util.Formatter를 사용합니다.

    BalusC 언급으로 그리고, 당신은 당신이 필요로하는 경우 기본 인수 순서를 변경할 수 있습니다 설명서에 표시됩니다. 그러나 아마 유일한 시간은 당신이 같은 인수 한 번 이상 사용하는 경우이가하고 싶은 /해야 할 것입니다.

  3. ==============================

    3.대신 소스 코드를보고, 당신은 자바 독 및 String.format () 및 포맷터 구문을 읽어야합니다.

    대신 소스 코드를보고, 당신은 자바 독 및 String.format () 및 포맷터 구문을 읽어야합니다.

    당신은 % 이후 값의 형식을 지정합니다. 진수 정수 예를 들어이 D이며, 문자열 것이 s입니다 :

    String aString = "world";
    int aInt = 20;
    String.format("Hello, %s on line %d",  aString, aInt );
    

    산출:

    Hello, world on line 20
    

    당신이 (인수 인덱스를 사용하는) 노력 일을하려면 사용 : * n 개의 * $를

    String.format("Line:%2$d. Value:%1$s. Result: Hello %1$s at line %2$d", aString, aInt );
    

    산출:

    Line:20. Value:world. Result: Hello world at line 20
    
  4. ==============================

    4.당신은이를 사용할 수 있습니다;

    당신은이를 사용할 수 있습니다;

    String.format("%1$s %2$s %2$s %3$s", "a", "b", "c");
    

    산출:

  5. ==============================

    5.또한 스칼라 (PREDEF에 의해 가져온 WrappedString에 암시 적 변환을 통해) 방법의 번호와 문자열을 확장 그래서 당신은 다음과 같은 작업을 수행 할 수 있습니다 :

    또한 스칼라 (PREDEF에 의해 가져온 WrappedString에 암시 적 변환을 통해) 방법의 번호와 문자열을 확장 그래서 당신은 다음과 같은 작업을 수행 할 수 있습니다 :

    val formattedString = "Hello %s, isn't %s cool?".format("Ivan", "Scala")
    
  6. ==============================

    6.공식 참조 클래스 포맷터입니다.

    공식 참조 클래스 포맷터입니다.

  7. ==============================

    7.스케일 2시 10분에서

    스케일 2시 10분에서

    val name = "Ivan"
    val weather = "sunny"
    
    s"Hello $name, it's $weather today!"
    
  8. ==============================

    8.이것은 및 String.format가 할 수있는 일의 목록입니다. 동일은 printf와 간다

    이것은 및 String.format가 할 수있는 일의 목록입니다. 동일은 printf와 간다

    int i = 123;
    o.printf( "|%d|%d|%n" ,       i, -i );      // |123|-123|
    o.printf( "|%5d|%5d|%n" ,     i, -i );      // |  123| –123|
    o.printf( "|%-5d|%-5d|%n" ,   i, -i );      // |123  |-123 |
    o.printf( "|%+-5d|%+-5d|%n" , i, -i );      // |+123 |-123 |
    o.printf( "|%05d|%05d|%n%n",  i, -i );      // |00123|-0123|
    
    o.printf( "|%X|%x|%n", 0xabc, 0xabc );      // |ABC|abc|
    o.printf( "|%04x|%#x|%n%n", 0xabc, 0xabc ); // |0abc|0xabc|
    
    double d = 12345.678;
    o.printf( "|%f|%f|%n" ,         d, -d );    // |12345,678000|     |-12345,678000|
    o.printf( "|%+f|%+f|%n" ,       d, -d );    // |+12345,678000| |-12345,678000|
    o.printf( "|% f|% f|%n" ,       d, -d );    // | 12345,678000| |-12345,678000|
    o.printf( "|%.2f|%.2f|%n" ,     d, -d );    // |12345,68| |-12345,68|
    o.printf( "|%,.2f|%,.2f|%n" ,   d, -d );    // |12.345,68| |-12.345,68|
    o.printf( "|%.2f|%(.2f|%n",     d, -d );    // |12345,68| |(12345,68)|
    o.printf( "|%10.2f|%10.2f|%n" , d, -d );    // |  12345,68| | –12345,68|
    o.printf( "|%010.2f|%010.2f|%n",d, -d );    // |0012345,68| |-012345,68|
    
    String s = "Monsterbacke";
    o.printf( "%n|%s|%n", s );                  // |Monsterbacke|
    o.printf( "|%S|%n", s );                    // |MONSTERBACKE|
    o.printf( "|%20s|%n", s );                  // |        Monsterbacke|
    o.printf( "|%-20s|%n", s );                 // |Monsterbacke        |
    o.printf( "|%7s|%n", s );                   // |Monsterbacke|
    o.printf( "|%.7s|%n", s );                  // |Monster|
    o.printf( "|%20.7s|%n", s );                // |             Monster|
    
    Date t = new Date();
    o.printf( "%tT%n", t );                     // 11:01:39
    o.printf( "%tD%n", t );                     // 04/18/08
    o.printf( "%1$te. %1$tb%n", t );            // 18. Apr
    
  9. ==============================

    9.여기에 사용 및 String.format 포매터의리스트 () 인

    여기에 사용 및 String.format 포매터의리스트 () 인

    http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html

  10. ==============================

    10.@Londo 스칼라의 "S"문자열 보간을 언급하지만, 나는 스칼라의 "F"문자열 보간이 원래의 질문에 관련성 생각합니다. 이 예는 다른 응답에 몇 시간이 방법 (스칼라 2.10 이후) 작성할 수 있습니다 사용 :

    @Londo 스칼라의 "S"문자열 보간을 언급하지만, 나는 스칼라의 "F"문자열 보간이 원래의 질문에 관련성 생각합니다. 이 예는 다른 응답에 몇 시간이 방법 (스칼라 2.10 이후) 작성할 수 있습니다 사용 :

    scala> val name = "Ivan"
    name: String = Ivan
    scala> val thing = "Scala"
    thing: String = Scala
    scala> val formatted = f"Hello $name%s, isn't $thing%s cool?"
    formatted: String = Hello Ivan, isn't Scala cool?
    

    원래의 질문에 대한 연결은 알고 있어야하는 것입니다 :

    문자열 보간의 좋은 점은 당신이 대신 및 String.format 방법에 대한 인수와 일치해야하는 문자열로 직접 대체되고있는 변수를 볼 수 있다는 것입니다.

  11. ==============================

    11.스칼라, 문자열 보간을 위해 우리는 하루에 저장하는 $를 가지고 우리의 삶을 훨씬 쉽게 :

    스칼라, 문자열 보간을 위해 우리는 하루에 저장하는 $를 가지고 우리의 삶을 훨씬 쉽게 :

    예를 들면 : 당신은 나이를 입력 이름과 나이를 취하고 안녕하세요 이름으로 말한다 말한다 함수를 정의하고 싶다. 즉 다음과 같이 쓸 수있다 :

    def funcStringInterpolationDemo(name:String,age:Int)=s"Hey ! my name is $name and my age is $age"
    

    따라서,이 함수를 호출 할 때이 같은 :

    funcStringInterpolationDemo("Shivansh",22)
    

    출력은 다음과 같습니다

    Hey ! my name is Shivansh and my age is 22
    

    당신은 당신이 나이 10 년 추가하려는 경우처럼, 같은 라인에서 변경하는 코드를 작성할 수 있습니다!

    다음 기능이 될 수있다 :

    def funcStringInterpolationDemo(name:String,age:Int)=s"Hey ! my name is $name and my age is ${age+10}"
    

    그리고 지금의 출력은 다음과 같습니다

    Hey ! my name is Shivansh and my age is 32
    
  12. from https://stackoverflow.com/questions/3695230/how-to-use-java-string-format-in-scala by cc-by-sa and MIT license