web-dev-qa-db-ja.com

Apexで文字列の配列を結合します

Apexを使用して、文字列を分割し、「AND」演算子を区切り文字として再結合したいと思います。

文字列を正常に分割しましたが、再結合に問題があります。

 String [] ideaSearchText = searchText.Split(' ');
 // How to rejoin the array of strings with 'AND'?

これどうやってするの?

16
Kp Gupta

_String[]_を String.join() に渡すことにより、v26(Winter 13)以降でこれを行うことができます。

_String input = 'valueOne valueTwo valueThree';
String[] values = input.split(' ');
String result = String.join( values, ' AND ' );
_

System.debug(result)を呼び出す匿名のApex出力:

_21:02:32.039 (39470000)|EXECUTION_STARTED
21:02:32.039 (39485000)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
21:02:32.040 (40123000)|SYSTEM_CONSTRUCTOR_ENTRY|[3]|<init>()
21:02:32.040 (40157000)|SYSTEM_CONSTRUCTOR_EXIT|[3]|<init>()
21:02:32.040 (40580000)|USER_DEBUG|[5]|DEBUG|valueOne AND valueTwo AND valueThree
_

Salesforce APIドキュメント: http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_string.htm

26
doublesharp

文字列オブジェクトが大きすぎると、例外Regex too complicatedが発生することに注意してください。この場合、次のようなことができます。

Blob blobValue = (Blob)record.get(blobField);

// Truncate string then split on newline, limiting to 11 entries
List<String> preview = blobValue.toString().substring(0,1000).split('\n', 11);

// Remove the last entry, because The list’s last entry contains all 
// input beyond the last matched delimiter.
preview.remove(preview.size()-1);

// In my use-case, I needed to return a string, and String.join() works 
// as the reverse of split()    
return String.join(preview, '\n');
0
Shane