private String scanString(final int row) {
        if (grid.getChildCount() == 0) {
            return "";
        }
        final StringBuilder sb = new StringBuilder();
        sb.append(((TextView) grid.getChildAt(row * this.grid.getColumnCount())).getText());
        for (int vIdx = row * this.grid.getColumnCount() + 1; vIdx < (row + 1) * this.grid.getColumnCount(); vIdx++) {
            final View v = grid.getChildAt(vIdx);
            if (v instanceof TextView) {
                final String text = ((TextView) v).getText().toString();
                sb.append(text);
                //add a space after degree/minute/second-marker if it is not the last char
                if (!".".equals(text) && vIdx + 1 < (row + 1) * this.grid.getColumnCount()) {
                    sb.append(" ");
                }
            } else if (v instanceof CharButton) {
                sb.append(((CharButton) v).getFormulaText());
            }
        }
        return sb.toString();
    }
returns true if latPatternn/lonPattern could be applied, false otherwise
main/src/main/java/cgeo/geocaching/ui/CalculatedCoordinateInputGuideView.java