Pawel Os.
Pawel Os.

Reputation: 633

Java - accessing characters in a string in a 2D-array-like manner?

Is there a more or less easy way (without having to implement it all by myself) to access characters in a string using a 2D array-like syntax?

For example:

"This is a string\nconsisting of\nthree lines"

Where you could access (read/write) the 'f' with something like myString[1][12] - second line, 13th row.

Upvotes: 1

Views: 5426

Answers (4)

boxed__l
boxed__l

Reputation: 1336

To modify character at positions in a string you can use StringBuffer

StringBuffer buf = new StringBuffer("hello");
buf.insert(3, 'F');
System.out.println("" + buf.toString());
buf.deleteCharAt(3);
System.out.println("" + buf.toString());

Other than that splitting into a 2D matrix should be self implemented.

Upvotes: 2

eatonphil
eatonphil

Reputation: 13672

You could do it like this:

String myString = "This is a string\nconsisting of\nthree lines";
String myStringArr[] = myString.split("\n");
char myChar = myStringArr[1].charAt(12);

Upvotes: 2

Kon
Kon

Reputation: 10810

You can use the split() function. Assume your String is assigned to variable s, then

String[] temp = s.split("\n");

That returns an array where each array element is a string on its own new line. Then you can do

temp[1].charAt(3);

To access the 3rd letter (zero-based) of the first line (zero-based).

Upvotes: 6

Brian Agnew
Brian Agnew

Reputation: 272237

Briefly, no. Your only option is to create an object that wraps and interpolates over that string, and then provide a suitable accessor method e.g.

new Paragraph(myString).get(1,12);

Note that you can't use the indexed operator [number] for anything other than arrays.

Upvotes: 1

Related Questions