Is String.split() multithreaded internally

Hi,
Can anyone tell me whether String.split() method is multi-threaded or not?
Whether it internally creates threads??

The definitive answer will be found in the Java source code, you should look there for the answer.
If you are asking "does String.split() make use of multiple CPUs" then the answer is very probably not.
Making use of multiple CPUs seem to be the only likely reason to make a "mult-threaded" version.
If you are asking "is String.split() thread safe" then the answer is most probably yes.
Strings are immutable so cannot be 'damaged' by multiple threads.
If you expose the result array to multiple threads, which can write to it, then of course you are asking for trouble,
but this in itself has nothing to do with the implementation of String.split()

Similar Messages

  • Java.lang.string(split)

    I am trying to split a delimited input record using the Perl equivalent pattern of /\|/. Can someone tell me what that translates too exactly in Java? My guess is "//'\'|//".
    Also once I split to an array I would like to pull the contents of each field out individually. The string.split function appears to place the entire record in the array. I am using the following syntax with
    the bufferedReader:
    String[] RecFields = thisLine.split("//'\'|//");
    My understanding was that this would place each field in it's own Array element without saving the delimeter. So that I could retrieve field
    number 3 in it's entirety for example by using the syntax:
    String strField3 = RecFields[3];
    StringTokenizer has already been tried and will not work because of null (empty) values in the string are skipped as Array elements.

    That was it!!! It was the actual delimiter string. I thought the extra slashes were an "OR" statement to eliminate duplicate records. I'll have to get this confirmed with Perl though. It's working perfectly now with \\| as the delimiter string. For those of you who are curious it was a 20 field pipe delimited record. Each field hada a variable length. The only records with values in each field all the time were fields 1 & 2, the others can contain null values. However all 20 fields are delimited no matter what value they contain.
    Thanks for your help everyone!

  • Faster split than String.split() and StringTokenizer?

    First I imrpoved performance of split by replacing the String.split() call with a custom method using StringTokenizer:
                    final StringTokenizer st = new StringTokenizer(string, separator, true);
                    String token = null;
                    String lastToken = separator; //if first token is separator
                    while (st.hasMoreTokens()) {
                        token = st.nextToken();
                        if (token.equals(separator)) {
                            if (lastToken.equals(separator)) { //no value between 2 separators?
                                result.add(emptyStrings ? "" : null);
                        } else {
                            result.add(token);
                        lastToken = token;
                    }//next tokenBut this is still not very fast (as it is one of the "hot spots" in my profiling sessions). I wonder if it can go still faster to split strings with ";" as the delimiter?

    Yup, for simple splitting without escaping of separators, indexOf is more than twice as fast:
        static private List<String> fastSplit(final String text, char separator, final boolean emptyStrings) {
            final List<String> result = new ArrayList<String>();
            if (text != null && text.length() > 0) {
                int index1 = 0;
                int index2 = text.indexOf(separator);
                while (index2 >= 0) {
                    String token = text.substring(index1, index2);
                    result.add(token);
                    index1 = index2 + 1;
                    index2 = text.indexOf(separator, index1);
                if (index1 < text.length() - 1) {
                    result.add(text.substring(index1));
            }//else: input unavailable
            return result;
        }Faster? ;-)

  • Splitting Large internal tables

    Hi All,
    How to split large internal table into smaller ones of fixed number of lines.
    The total number of lines are not known and is subjected to vary.
    Regards,
    Naba

    I am not sure about your requirements, you try with the below solution
    Itab : contains all entries  let us say 3000
    Itab1 
    itab2
    itab3
    No.of entries to be split based on 3000/n  ( 3000/3)  = 1000
    split_val = 1000
    N_split_from = 1
    N_split_to = 1000
    APPEND LINES OF ITAB1 FROM N_split_from TO N_split TO ITAB1.
    N_split_from = 1 +  split_val
    N_split_to = 1000 + split_val
    APPEND LINES OF ITAB1 FROM N_split_from TO N_split TO ITAB2.
    N_split_from = 1 +  split_val
    N_split_to = 1000 + split_val
    APPEND LINES OF ITAB1 FROM N_split_from TO N_split TO ITAB3.
    Regards
    Sasi

  • String operations in internal table

    Dear friends..
            Good morning.
                        I wish to know.. how i segregate the field from a database table to internal table into two different internal table field. say for example.
    i have db table tab1 which has field number
    tab1 -> number
    and i have another internal table itab1 whic has two fields numa and numb
    tab1 -> numa
         -> numb
    i have value in tab1->number is 001 and 0001
    i wish to segregate this two values in to internal table
    if the value is 001 then it should be into 001 -> numa
    if the value is 0001 then it should be into 0001-> numb
    i dont know how to perform the string operations in internal table.. would you like to tell me how i fix this problem any suggetion, article, code will be great help of mine..
    thanking you
    Regards
    Naim

    Hi,
      what u can do is check the lenth
    lit_data_tab.
    lit_data_3
    lit_data_4.
    lv_char3 type char3.
    lv_char4 type char4.
    lv_length type i.
    loop at lit_data_tab.
    lv_length = STRLEN ( lit_data_tab-value ).
    if lv_length = 3.
       lv_char3 = lit_data_tab-value .
       append lv_char3 to lv_char3 type char3.
    else.
       lv_char4 = lit_data_tab-value .
       append lv_char4 to lv_char3 type char4.
    endif.
    endloop.
    if u want
    numa  numb
    003   0003.
    then u have to loop in one table and modify other.
    that is any one table should contains both the field.
    read the table with one field
    mark helpfull answers
    Regards
    Message was edited by: Manoj Gupta

  • Problem using java String.split() method

    Hi all, I have a problem regarding the usage of java regular expressions. I want to use the String.split() method to tokenize a string of text. Now the problem is that the delimiter which is to be used is determined only at runtime and it can itself be a string, and may contain the characters like *, ?, + etc. which are treated as regular expression constructs.
    Is there a way to tell the regular expression that it should not treat certain characters as quantifiers but the whole string should be treated as a delimiter? I know one solution is to use the StringTokenizer class but it's a legacy class & its use is not recommended in Javadocs. So, does there exist a way to get the above functionality using regular expressions.
    Please do respond if anyone has any idea. Thanx
    Hamid

    public class StringSplit {
    public static void main(String args[]) throws Exception{
    new StringSplit().doit();
    public void doit() {
    String s3 = "Dear <TitleNo> ABC Letter Details";
    String[] temp = s3.split("<>");
    dump(temp);
    public void dump(String []s) {
    System.out.println("------------");
    for (int i = 0 ; i < s.length ; i++) {
    System.out.println(s);
    System.out.println("------------");
    Want to extract only string between <>
    for example to extract <TitleNo> only.
    any suggestions please ?

  • How to implement String.split() on 1.3?

    Hi,
    I have a String split method which is able to be run on 1.4.
    The string "boo:and:foo", for example, yields the following results with these parameters:
    Regex Limit Result
    : 2 { "boo", "and:foo" }
    : 5 { "boo", "and", "foo" }
    : -2 { "boo", "and", "foo" }
    o 5 { "b", "", ":and:f", "", "" }
    o -2 { "b", "", ":and:f", "", "" }
    o 0 { "b", "", ":and:f" }
    The program cannot be complied if I run it on 1.3. How can I do the 1.4 split function on 1.3?
    Thanks for advice

    If you don't require the more powerful regular expression matching, you can implement the split() functionality with existing String methods.
    If you are splitting around a character, you can use StringTokenizer, unless you care about empty tokens. If you need empty tokens returned, then you can use the following method:
    public static String[] split(String input, char c) {
        int tokenCount = 0;
        int cIndex = -1;
        do {
            cIndex = input.indexOf(c, cIndex + 1);
            tokenCount++;
        } while (cIndex >= 0);
        String[] tokens = new String[tokenCount];
        int tokenIndex = 0;
        do {
            int index = input.indexOf(c, cIndex + 1);
            if (index < 0) {
                tokens[tokenIndex] = input.substring(cIndex + 1);
            else {
                tokens[tokenIndex] = input.substring(cIndex + 1, index);
            cIndex = index;
            tokenIndex++;
        } while (cIndex >= 0);
        return tokens;
    }If you need to split around a multiple character string, use the following method.
    public static String[] split(String input, String str) {
        int strLength = str.length();
        int tokenCount = 0;
        int strIndex = -strLength;
        do {
            strIndex = input.indexOf(str, strIndex + strLength);
            tokenCount++;
        } while (strIndex >= 0);
        String[] tokens = new String[tokenCount];
        int tokenIndex = 0;
        strIndex = -strLength;
        do {
            int index = input.indexOf(str, strIndex + strLength);
            if (index < 0) {
                tokens[tokenIndex] = input.substring(strIndex + strLength);
            else {
                tokens[tokenIndex] = input.substring(strIndex + strLength, index);
            strIndex = index;
            tokenIndex++;
        } while (strIndex >= 0);
        return tokens;
    }These have only been lightly tested, no guarantees.

  • How to use method String.split

    I am spliting a string, just like "1a|24|3|4". My code is
    String[] array = new String[10];
    String buff = "1|2|3|4";
    array = buff.split("|");
    System.out.println(array[1]);
    I think that the result should be "24", but the result always
    is "1". Why? When I use String.split(",") to split a string "1a,24,3,4",
    I can get the result "24". Can't "|" be used as a delimiter? Who can
    explain this issue? Thanks.

    Hi
    The argument of split is a "regular expression" instead any common string with delimiters as used in StringTokenizer.
    The char "|" is named as "branching operator" or "alternation"..doesn't matter this moment.
    If you must to use "|" in source strings, change the regular expression to "\\D", it means "any non numeric char":
    // can use any delimiter not in range '0'..'9'
    array = buff.split("\\D");
    Regards.

  • Regular expression not working for String.split()?

    hi, i have a String variable called 'table'.
    It has a bunch of chunks of data seperated by whitespace, whether it
    be spaces or carraige returns. Anyways, i want to split this up using
    the String.split function. i want to split it around whitespace.
    here is my code:
    String codes[] = table.split("\s");
    However, i'm getting back all nulls in the codes variable. What am i doing wrong?
    thanks

    split("\\s")\ is special both in Java String literals and in regex, so you need two of them.
    You'll probably also have to take an extra step it you don't want regex to stop at newlines. I forget the details, so check the docs.

  • String split problem around | character

    I'm trying to split a string (well, a bunch of them--astronomical data) into an array of substrings around a common character, the |. Seems pretty simple, but the regular String.split() method doesn't work with it. Here's part of the code I tried (more or less):
    String line = "";
                String[] blah = new String[43];
                //do {
                    line = inputStream.readLine();
                    if (line != null)
                        blah = line.split("|");Reading the line from the input stream gives you a string like so:
    0001 00008 1| | 2.31750494| 2.23184345| -16.3| -9.0| 68| 73| 1.7| 1.8|1958.89|1951.94| 4|1.0|1.0|0.9|1.0|12.146|0.158|12.146|0.223|999| | | 2.31754222| 2.23186444|1.67|1.54| 88.0|100.8| |-0.2
    Basically a long list of data separated by |. But when I split the string around that character, it returns an array of each individual character, where blah[1] is 0, blah[4] is 1, etc. The split function works fine for other expressions, I tried it (using "5" as the expression gives 0001 00008 1| | 2.317 as the first string, for example), so what's wrong? How do I split around the |?

    confusing, the split method takes a regular expression, and as such, the "pipe": |, is a special char for a regexp.
    you need to escape it (in regex-style context), via:message.split("\\|");

  • String.split() regular expression

    Regular expression escapes me. I have a line of a CSV file that looks like this:
    1,,3,2,45.00,"This & That, LLC",0
    I want the string split by commas but the problem with the line above is there's a comma in the name of the company...I obviously don't want the company name split in half...what would the regular expression be that I would provide to the split method to ensure that only commas not found in between double quotes are used to split the string into an array of Strings? is this possible?
    Thanks in advance!
    Rob

    Telling someone to google might be deserved, but it is mean and unhelpful.
    If you want to find a regex for CSV's see O'Reilly's "Mastering Regular Expressions" Section 8.4.4.3. Either buy the book - it's worth it - or subscribe to safari.

  • How do I insert a WAIT or a PAUSE function, followed by a constant string of numbers [international code, country code and the destination phone number].

    I'd like to program a LOCAL ACCESS NUMBER, then insert a WAIT or a PAUSE function, followed by a constant string of numbers [international code, country code and the destination phone number]. Dialing the local, US  access number is not an issue, but I can't find any info in the manual on how to insert a WAIT or PAUSE or how to insert the remaining string of international codes and destination phone number. Any help would be appreciated. Thanks!

    How to Add Pauses when you Dial a Number on the Samsung Galaxy Note 3 - For Dummies
    It is also described on page 42 of your owners manual...

  • Split a string into multiple internal tables

    Hi all,
    I need to split a string based internal table into multiple internal tables based on some sub strings in that string based internal table...
    High priority help me out...
    eg...
    a | jhkhjk | kljdskj |lkjdlj |
    b | kjhdkjh | kldjkj |
    c | jndojkok |
    d |
    this data which is in the application server file is brought into a internal table as a text. Now i need to send 'a' to one internal table, 'b' to one internal table, so on... help me
    <Priority downgraded>
    Edited by: Suhas Saha on Oct 12, 2011 12:24 PM

    Hi pradeep,
    eg...
    a | jhkhjk | kljdskj |lkjdlj |
    b | kjhdkjh | kldjkj |
    c | jndojkok |
    d |
    As per your statement "Now i need to send 'a' to one internal table, 'b' to one internal table"
    Do you want only a to one internal table and b to one internal table
    OR
    Do you want the whole row of the internal table i mean
    a | jhkhjk | kljdskj |lkjdlj | to 1 internal table
    Having the case of an internal table which is of type string,
    1) Loop through the internal table.    LOOP AT lt_tab INTO lwa_tab.
    2) Ge the work area contents and get the first char wa_tab-string+0(1)
    3)   FIELD-SYMBOLS: <t_itab> TYPE ANY TABLE.
      w_tabname = p_table.
      CREATE DATA w_dref TYPE TABLE OF (w_tabname).
      ASSIGN w_dref->* TO <t_itab>.
    Follow the link
    http://www.sap-img.com/ab030.htm
    http://www.sapdev.co.uk/tips/dynamic-structure.htm
    and then based on the sy-tabix values you will get that many number of internal table
           <FS> = wa_tab-string+0(1)
          append  <FS>
    OR
    USE SPLIT statement at the relevant seperator
    revert for further clarification
    Thanks
    Sri
    Edited by: SRIKANTH P on Oct 12, 2011 12:36 PM

  • Split String value into internal table at Carriage return

    Hi All,
    I have given a string type context ( text edit  box ) to the user to enter the values. The data can have carriage returns also.
    My Requirement is that I want to split the data at carriage returns and store it in my tables.
    I tired with a constant value of '%CR_LF' as available in CL_ABAP_CHAR_UTILITIES but to no good result.
    Can the Experts suggest some solution?/??
    Thankx in advance.
    Regds,
    Srini

    Hi Srini,
    Have you looked at your string containing the text in the debugger to verify that you really have <CR>+<LF> (i.e. reflecting CL_ABAP_CHAR_UTILITIES=>CR_LF, which should be easily visible when looking at the hex codes of the string)? Maybe it's just a <LF> (i.e. CL_ABAP_CHAR_UTILITIES=>NEWLINE). Might be good to do a REPLACE first using a regular expression for identifying the line feeds and then doing the SPLIT.
    Cheers, harald
    p.s.: If you still cannot get it to work, provide some more details of what you're doing...

  • How to decompose a string with ';' into Internal table

    Hello all,
    I need your help for find a Function module or Abap code.
    I have a file with the separator is the ';'
    Example of the contains of my file :
    521010;16;46048,00;;*Soucet*Odmena za
    524012;41;103807,00;;Zdrav.p.organizace
    524012;42;;18332,00;Zdrav.p.organizace
    I want a module function which can separate all the String separate by a ';' into a internal table :
    for example my internal table have 5 column :
    Num......|.....CC.....|............Credit....|...........Debit........|.....Label
    521010....|.....16.....|......46048,00.....|...........................|.....Soucet**Odmena za
    524012....|.....41.....|......103807,00...|...........................|.....Zdrav.p.organizace
    524012....|.....42.....|..........................|........18332,00....|.....Zdrav.p.organizace
    For read the date of my file is not a problem with ABAP Code :
    DO.
          CLEAR : ws_facm.
          break epetrini.
          READ DATASET myFile INTO test.
          IF sy-subrc EQ 0.
            IF ws_facm-codenreg = 'D'.
              APPEND ws_facm TO wt_facm.
            ENDIF.
          ELSE.
            EXIT.
          ENDIF.
        ENDDO.
    Thank you for your helps.
    Best regards Emilien
    Edited by: Emilien P. on Mar 31, 2010 4:30 PM
    Edited by: Emilien P. on Mar 31, 2010 4:34 PM
    Edited by: Emilien P. on Mar 31, 2010 4:35 PM
    Edited by: Emilien P. on Mar 31, 2010 4:36 PM

    Hi,
    Try whith this:
    DATA: str1 TYPE string,
          str2 TYPE string,
          str3 TYPE string,
          itab TYPE TABLE OF string,
          text TYPE string.
    text = `What a drag it is getting old`.
    SPLIT text AT space INTO: str1 str2 str3,
                              TABLE itab.
    Let me know if it works.
    Regards,
    Moh.

Maybe you are looking for

  • How to restore edited messages after Thunderbird crash?

    I work with several messages opened usually to check details of a conversation or for preparing the answer. When Thunderbird crashes all these open messages are lost. Some I edited are in the Drafts, the ones I just viewed are lost. Is there a way to

  • Vertical Text in PowerPoint saved as a PDF

    I just created a document in PowerPoint with vertical text.  When I saved the document, some of the vertical text and rotated back to horizontal changing the format of my document. Is there a way to save a PowerPoint document as PDF without changing

  • Open with file type

    Hello, How can I class of files of given type with a specific application?  For example I have both Pages and OpenOffice installed and by default I want any .doc file to open in Pages unless I manually say otherwise. I've seen forum posts about Open

  • Need to remove constant humming sound

    Hello all, I am working on video clips for school and the room was quiet that I was in and played back ok on the camera, but after getting them into FCE 4 there is a loud humming noise. I have attempted using various audio filters and am a beginner w

  • DB_Executor Role Not Working

    Friends, I had granted DB_Executor role to one of the user now user wants to execute one store procedure but he is getting "the Insert permission was denied" Message. I have already granted the executor role to the db_Executor. Further, Under Securab